RPA中使用pyqt 界面的 python 方法記錄

最近幾個項目的界面都使用了 pyqt 庫,好比商城中的抽獎機器人,新手指引機器人等,在這裏不得不誇一下 Pyqt 的強大與優美:
fa3b0e95a17547a7a45e8372dda75491_image.png
因爲在此項目以前,我也沒有用過 qt,項目開發過程當中學習了不少知識也遇到了很多問題,不少到如今也只是只知其一;不知其二,在此記錄下我遇到的問題和個人解決方法。
剛開始的界面設計,我也是根據教程使用 QtDesigner 和 PyUIC 生成界面代碼,這應該是個不錯的選擇,但我真的手殘用不來,因而轉而本身寫代碼,感受更好處理。python

1、我用到的一些部件

c2315f1ae2de455c9959eab2e3bba67b_image.png
其餘用到的函數:app

  • QLineEdit:setPlaceholderText(‘設置默認提示語’)
  • setMaxLength() 最大可輸入長度
  • QLabel:setAlignment(Qt.AlignCenter) 使 label 中的文字居中
  • QComboBox : 使用 addItem(‘a’) 或 addItems(list)添加選項,能夠添加一個列表;

2、按鈕點擊事件

爲按鈕添加點擊事件,按鈕被點擊時執行對應函數,函數不加括號。less

pushButton.clicked.connect(self.function)

3、多個界面之間的跳轉

本覺得實現這一功能不會很難,結果發現本身想的有些簡單,最後用了一個看似解決了這個問題的簡單方法:建立 jump.py 文件將其做爲主文件,建立按鈕點擊事件實現不一樣窗口的顯示 .show()與隱藏 .hide() 。
 如:
ide

from windowA import *
from windowB import *
from windowC import *

app = QApplication(sys.argv)
wa = windowA()
wb = windowB()
wc = windowC()
wa.mainWnd.show()

def eventA():
   wb.mainWnd.show()
   wa.mainWnd.hide()
def eventB():
   wc.mainWnd.show()
   wb.mainWnd.hide()

wa.pushButton.clicked.connect(eventA)
wb.pushButton.clicked.connect(eventB)

if __name__ == "__main__":
   app.aboutToQuit.connect(app.deleteLater)
   app.exit(app.exec_())

4、美化

說不上美化,只是對界面的佈局等進行一些改變。函數

4.1 佈局

  • setSpacing(10) : 各個部件之間的距離;
  • setContentMargin(10, 10, 10, 10) : 表示部件與窗體的邊距,分別爲左上右下的邊距
  • self.setGeometry(100,300,500,400) : 設置窗口在屏幕的位置並設定窗口大小;
  • addWidget(label, 0, Qt.AlignTop | Qt.AlignCenter) : 參數爲 (QWidget, stretch, alignment),添加部件時可設置伸縮量和對齊方式,使用 | 組合;
  • 對齊方式有:Qt.AlignLeft、Qt.AlignRight、Qt.AlignHCenter 水平方向居中、Qt.AlignVCenter、Qt.AlignJustify 水平方向調整間距兩端對齊、Qt.AlignTop、Qt.AlignButton、Qt.AlignCenter

addStretch() : 使一個部件向上(或左)對齊後每每沒法另下一個向下(或右)對齊,此時需在這之間添加 Stretch;佈局

4.2 部件

  • setFixedSize(50, 50) : 設置固定大小;
  • setMaximumHeight(80) : 設置最大高度,同理可設置最小和寬度;
  • setFont(QFont(「Microsoft YaHei」,25,75)) :
  • setStyleSheet() : 能夠設置 background 背景顏色(可用英文代碼、RGB 顏色值、十六進制顏色碼錶示)、background-image 背景圖片、color 字體顏色、font 字體大小、border 邊界寬度 顏色、border-radius 邊界圓角角度等屬性

 如:
學習

self.button.setStyleSheet('color:rgb(52,196,243,200);border-radius:25px;border:4px solid rgb(52,196,243);background:#D2E9FF;')  # RGB第四位表示透明度,0~255
self.label.setStyleSheet('color:CornflowerBlue;background-image:url(1.jpg);border-bottom-left-radius:20px')  
# 只設置左下邊界圓角

5、其餘

  • QApplication.setStyle(‘Fusion’) : Application 界面風格設置;
  • self.setWindowFlag(QtCore.Qt.FramelessWindowHint) # 隱藏邊框
  • self.setAttribute(QtCore.Qt.WA_TranslucentBackground) # 設置窗口背景透明

界面風格不合我心意,因而隱藏邊框、設置背景透明,自定義標題欄;字體

  • 有關透明度:
    設置顏色透明度:rgb(255, 255, 255, 200) 最後一位表示顏色透明度,0~255
    設置界面透明度:self.setWindowOpacity(0.91)
  • 使用 HTML 標籤美化文字,由此可實現同一 label 不一樣字號、顏色等;

如:ui

label.setText('<font size="30" face="Microsoft Yahei" ><b style="color:rgb(52,196,243)">WubbaLubba</b></font><h6>'+ "DubDub")

免費下載試用:https://support.i-search.com.cn/url

相關文章
相關標籤/搜索