pyqt樣式表語法筆記(中)

pyqt樣式表語法筆記(中)

pyqt
QSS
python
樣式表

1、彈窗python

在平常的各類桌面軟件的使用中,咱們都會碰到彈窗。例如註冊,登陸的時候,會有相應的信息彈窗,這裏就以信息收集彈窗爲例進行彈窗的說明。web

常見的彈窗的信息種類有文本類、數值類和下拉框選項這幾種。主要是經過調用QInputDialog這個類的各類方法實現的。下面分別介紹。瀏覽器


  • 1.文本類
    QInputDialog.getText(self,'彈窗標題','彈窗提示信息','控件類型','控件裏的提示信息')
    ('控件類型'通常爲QLineEdit.Normal)
    具體詳見下面的示例。app

  1. @pyqtSignature("") 
  2. def on_input_clicked(self): 
  3. (my_str,status) = QInputDialog.getText(self, '請在此輸入信息', '請輸入您的姓名', QLineEdit.Normal, '姓名'
  4. print(my_str) 
  5. print(status) 

代碼解釋:
QInputDialog.getText這一方法會返回一個tuple,第一個元素是用戶輸入的信息,第二個是返回狀態,當用戶選擇'ok',則返回True,若選擇'Cancel',則返回false.函數

文本類彈窗

文本類彈窗

效果展現

效果展現

my_str用於接收用戶輸入的信息,status則表示返回的布爾值


  • 2.數值類
    數值類分爲整型(int)和浮點型(double)
    整型:QInputDialog.getInteger(self,'彈窗標題','彈窗提示信息','默認值','最小值','最大值')
    浮點型: QInputDialog.getDouble(self,'彈窗標題','彈窗提示信息','默認值','最小值','最大值')網站

QInputDialog.getInteger

QInputDialog.getInteger

解釋:
第"1"處,用戶能夠用鍵盤上下鍵進行數值的變更,固然亦可用鼠標
第"2"處,當用戶輸入比所設定的值大的數時是不會有反應的。也就是說,假如咱們設定的最大值是99,當我輸入10,再想輸入0的時候是不會有反應的。懂?


  • 3.下拉框選項編碼

  1. @pyqtSignature("") 
  2. def on_list1_clicked(self): 
  3. my_list = QStringList() #這段我不能正常執行,可是視頻教程裏是這麼寫的,並且能運行 
  4. my_list.append("apple"
  5. my_list.append('banana'
  6. my_list.append('pear'
  7. my_str, status = QInputDialog.getItem(self, '下拉框', '選擇你喜歡的水果', my_list) 
  8. print(my_str,status) 

看教程的時候完美運行,一到本身就出問題,反正就是說QStringList這個東西有問題,百度和谷歌了半天也沒找到解決辦法,後來直接用list就能夠了。。。醉了。spa

  1. @pyqtSignature("") 
  2. def on_list1_clicked(self): 
  3. my_list = [] 
  4. ... 

下拉框效果圖

下拉框效果圖

2、顯示圖片命令行

  • 1.顯示靜態圖片
    要顯示圖片,首先須要將圖片導入進來,建議是將圖片放到你當前文件所在目錄。
    a.導入圖片到資源管理器code

導入圖片1

導入圖片1

導入圖片2

導入圖片2

第一步新建.qrc文件,保存在當前目錄下。
第二步爲前綴取名(無限制)
第三步導入圖片或其餘文件

b.拖拽圖片窗口 Graphics View

Graphics View

Graphics View

c.修改樣式表

修改樣式表

修改樣式表

若是隻是爲了顯示圖片建議選擇"border-image",由於它會自適應窗口。

  • 2.給圖片添加事件

難道靜態圖片就能知足咱們的要求嗎?爲何不能夠經過點擊圖片實現跳轉到網站或其餘的功能呢?下面就來作這件事。

首先經過上面一個步驟,咱們的目錄中已經有一個後綴爲**.qrc**的文件,咱們須要將它轉化爲.py文件。

a.用命令行進行轉化

  1. # 將qrc文件轉化爲.py文件 
  2. # 命令行須要進入到當前目錄下 
  3. pyrcc4 my_pic.qrc > test_rc.py 

以後咱們獲得了一個test_rc.py文件,不知道爲何,我執行的時候報錯了,錯誤以下

  1. Traceback (most recent call last): 
  2. File "C:\Users\14356\Desktop\test_pyqt\test_rc.py", line 6521, in <module> 
  3. qInitResources() 
  4. File "C:\Users\14356\Desktop\test_pyqt\test_rc.py", line 6516, in qInitResources 
  5. QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) 
  6. TypeError: qRegisterResourceData(int, str, str, str): argument 2 has unexpected type 'str' 

估計有事編碼的問題,omg!
三個參數經過命令行後生成的是str類型,可是函數調用有要求byte類型,這不扯蛋嗎?!沒辦好只好將三個參數轉化成bytes類型。不過不要緊,bug來了就去解決吧~~在test_rc.py中添加以下代碼

  1. qt_resource_struct = qt_resource_struct.encode('utf-8'
  2. qt_resource_name = qt_resource_name.encode('utf-8'
  3. qt_resource_data = qt_resource_data.encode('utf-8'

b. 修改槽函數代碼
須要在咱們本身定義的類下初始化圖片控件的鼠標點擊事件,並觸發咱們本身定義的my_picEvent函數。
新增代碼以下

圖片鼠標事件

圖片鼠標事件

介紹一下webbrowser這個類,咱們須要使用 import webbrowser 來引入這個類,而後當咱們點擊圖片就會經過默認瀏覽器打開網站了。牛逼!

0

相關文章
相關標籤/搜索