pyqt筆記1模組 訊號和插槽

2022-05-05 02:09:13 字數 2197 閱讀 9873

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 方法之後,應用進入主迴圈。主迴圈獲取事件並把它們發往物件。應用在它的生命週期中產生的不同事件互動。事件主要由使用者產生,但是它們也可以由其他方式產生,如 網際網路,視窗管理器,定時器,當乙個特殊的事件發生時,將發射訊號,槽 可...