pyqt樣式表語法筆記(中)
1、彈窗python
在平常的各類桌面軟件的使用中,咱們都會碰到彈窗。例如註冊,登陸的時候,會有相應的信息彈窗,這裏就以信息收集彈窗爲例進行彈窗的說明。web
常見的彈窗的信息種類有文本類、數值類和下拉框選項這幾種。主要是經過調用QInputDialog這個類的各類方法實現的。下面分別介紹。瀏覽器
1.文本類
QInputDialog.getText(self,'彈窗標題','彈窗提示信息','控件類型','控件裏的提示信息')
('控件類型'通常爲QLineEdit.Normal)
具體詳見下面的示例。app
- @pyqtSignature("")
- def on_input_clicked(self):
- (my_str,status) = QInputDialog.getText(self, '請在此輸入信息', '請輸入您的姓名', QLineEdit.Normal, '姓名')
- print(my_str)
- print(status)
代碼解釋:
QInputDialog.getText這一方法會返回一個tuple,第一個元素是用戶輸入的信息,第二個是返回狀態,當用戶選擇'ok',則返回True,若選擇'Cancel',則返回false.函數
my_str用於接收用戶輸入的信息,status則表示返回的布爾值
2.數值類
數值類分爲整型(int)和浮點型(double)
整型:QInputDialog.getInteger(self,'彈窗標題','彈窗提示信息','默認值','最小值','最大值')
浮點型: QInputDialog.getDouble(self,'彈窗標題','彈窗提示信息','默認值','最小值','最大值')網站
解釋:
第"1"處,用戶能夠用鍵盤上下鍵進行數值的變更,固然亦可用鼠標
第"2"處,當用戶輸入比所設定的值大的數時是不會有反應的。也就是說,假如咱們設定的最大值是99,當我輸入10,再想輸入0的時候是不會有反應的。懂?
- @pyqtSignature("")
- def on_list1_clicked(self):
- my_list = QStringList() #這段我不能正常執行,可是視頻教程裏是這麼寫的,並且能運行
- my_list.append("apple")
- my_list.append('banana')
- my_list.append('pear')
- my_str, status = QInputDialog.getItem(self, '下拉框', '選擇你喜歡的水果', my_list)
- print(my_str,status)
看教程的時候完美運行,一到本身就出問題,反正就是說QStringList這個東西有問題,百度和谷歌了半天也沒找到解決辦法,後來直接用list就能夠了。。。醉了。spa
- @pyqtSignature("")
- def on_list1_clicked(self):
- my_list = []
- ...
2、顯示圖片命令行
第一步新建.qrc文件,保存在當前目錄下。
第二步爲前綴取名(無限制)
第三步導入圖片或其餘文件
b.拖拽圖片窗口 Graphics View
c.修改樣式表
若是隻是爲了顯示圖片建議選擇"border-image",由於它會自適應窗口。
難道靜態圖片就能知足咱們的要求嗎?爲何不能夠經過點擊圖片實現跳轉到網站或其餘的功能呢?下面就來作這件事。
首先經過上面一個步驟,咱們的目錄中已經有一個後綴爲**.qrc**的文件,咱們須要將它轉化爲.py文件。
a.用命令行進行轉化
- # 將qrc文件轉化爲.py文件
- # 命令行須要進入到當前目錄下
- pyrcc4 my_pic.qrc > test_rc.py
以後咱們獲得了一個test_rc.py文件,不知道爲何,我執行的時候報錯了,錯誤以下
- Traceback (most recent call last):
- File "C:\Users\14356\Desktop\test_pyqt\test_rc.py", line 6521, in <module>
- qInitResources()
- File "C:\Users\14356\Desktop\test_pyqt\test_rc.py", line 6516, in qInitResources
- QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
- TypeError: qRegisterResourceData(int, str, str, str): argument 2 has unexpected type 'str'
估計有事編碼的問題,omg!
三個參數經過命令行後生成的是str類型,可是函數調用有要求byte類型,這不扯蛋嗎?!沒辦好只好將三個參數轉化成bytes類型。不過不要緊,bug來了就去解決吧~~在test_rc.py中添加以下代碼
- qt_resource_struct = qt_resource_struct.encode('utf-8')
- qt_resource_name = qt_resource_name.encode('utf-8')
- qt_resource_data = qt_resource_data.encode('utf-8')
b. 修改槽函數代碼
須要在咱們本身定義的類下初始化圖片控件的鼠標點擊事件,並觸發咱們本身定義的my_picEvent函數。
新增代碼以下
介紹一下webbrowser這個類,咱們須要使用
import webbrowser
來引入這個類,而後當咱們點擊圖片就會經過默認瀏覽器打開網站了。牛逼!
0