pyqt5圖形介面程式設計
pyqt5指南
pyqt5本身擁有超過620個類和6000函式及方法。
qtcore模組涵蓋了包的核心的非gui功能,此模組被用於處理程式中涉及到的 time、檔案、目錄、資料型別、文字流、鏈結、mime、執行緒或程序等物件。
qtwidgets模組包含了一整套ui元素元件,用於建立符合系統風格的classic介面。
qtgui模組涵蓋多種基本圖形功能的類; 包括但不限於:視窗集、事件處理、2d圖形、基本的影象和介面 和字型文字。
訊號和槽是用來在物件間傳遞資料的方法:當乙個特定事件發生的時候,signal會被發射出來,和訊號連線的slot會被呼叫。連線訊號和槽的語法為senderobject.signal.connect(receiverobject.slot)
很多gui程式設計使用的是**機制,而pyqt5具有獨特的訊號和插槽機制來處理事件。。在編寫乙個類時,要先定義該類的訊號與槽,在類中訊號與槽進行連線,實現物件之間的資料傳輸,訊號發出的引數個數一定要大於槽函式接收的引數個數。
特點
乙個訊號可以連線多個槽。乙個訊號可以連線另乙個訊號。
訊號引數可以是任何python型別。
乙個槽可以監聽多個訊號。
訊號與槽的連線方式可以是同步連線,也可以是非同步連線。
訊號與槽的連線可能會跨執行緒。
訊號可能會斷開。
定義新的訊號:使用pyqtsignal()方法,新的訊號作為類的屬性。
#示例
class mywidget(qwidget):
#定義訊號
signal1 = pyqtsignal() # 無引數的訊號
signal2 = pyqtsignal(int) # 帶乙個引數(整數)的訊號
signal3= pyqtsignal(int,str) # 帶兩個引數(整數,字串)的訊號
def __init__(self,parent=none):
super(custsignal,self).__init__(parent)
#將訊號連線到指定槽函式
self.signal1.connect(self.signalcall1)
self.signal2.connect(self.signalcall2)
self.signal3.connect(self.signalcall3)
#實現槽函式
def signalcall1(self):
print("signal1 emit")
def signalcall2(self,val):
print("signal2 emit,value:",val)
def signalcall3(self,val,text):
print("signal3 emit,value:",val,text)
def mousepressevent(self, e):
#重寫點選事件 發射訊號
self.signal1.emit()
self.signal2.emit(1)
self.signal3.emit(1,"text")
sender()方法確定訊號源
#在槽中
def buttonclicked(self):
computer = randint(1,3)
player = 0
sender = self.sender()
if sender.text() == '剪刀':
player = 1
elif sender.text() == '石頭':
player = 2
else:
player = 3
自定義引數的傳遞:使用lambda表示式
button1.clicked.connect(lambda: self.onbuttonclick(1))
button2.clicked.connect(lambda: self.onbuttonclick(2))
PyQT事件處理(訊號和插槽)
以下 可以載入剛才設計的ui from pyside2.qtuitools import quiloader class calc def init self 載入剛才設計的.ui檔案 self.ui quiloader load d vs2019 wf calc calc calc.ui 給ui中...
PyQT事件處理(訊號和插槽)
以下 可以載入剛才設計的ui from pyside2.qtwidgets import from pyside2.qtuitools import quiloader class calc def init self 載入剛才設計的.ui檔案 self.ui quiloader load d vs...
詳解Pyqt4事件和訊號
這是自己在 學習 pyqt 的過程中總結出來的筆記。呼叫應用的 exec 方法之後,應用進入主迴圈。主迴圈獲取事件並把它們發往物件。應用在它的生命週期中產生的不同事件互動。事件主要由使用者產生,但是它們也可以由其他方式產生,如 網際網路,視窗管理器,定時器,當乙個特殊的事件發生時,將發射訊號,槽 可...