直接上例子:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
layout = QVBoxLayout() #佈局
self.b1 = QPushButton("Button1") #添加按鈕
self.b1.setCheckable(True) # 識別b1的狀態
self.b1.toggle() # 在狀態之間切換
self.b1.clicked.connect(lambda:self.whichbtn(self.b1)) # 發射clicked信號並連接下面的whichbtn槽函數,此處可以傳遞b1這個參數進去
self.b1.clicked.connect(self.btnstate) # 發射clicked信號並連接下面的btnstate槽函數
layout.addWidget(self.b1) #佈局套路
self.b2 = QPushButton()
self.b2.setIcon(QIcon(QPixmap("python.gif"))) # b2設置圖標
self.b2.clicked.connect(lambda:self.whichbtn(self.b2))
layout.addWidget(self.b2)
self.setLayout(layout)
self.b3 = QPushButton("Disabled") # b3不可按
self.b3.setEnabled(False)
layout.addWidget(self.b3)
self.b4 = QPushButton("&Default") # 名稱中加上前綴&,這樣就可以使用快捷鍵Alt+D來點擊該按鈕
self.b4.setDefault(True)
self.b4.clicked.connect(lambda:self.whichbtn(self.b4))
layout.addWidget(self.b4)
self.setWindowTitle("Button demo")
def btnstate(self):
if self.b1.isChecked():
print "button pressed"
else:
print "button released"
def whichbtn(self,b):
print "clicked button is "+b.text()
def main():
app = QApplication(sys.argv)
ex = Form()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
這是按鈕點擊的一種寫法,還有一種是:
QtCore.QObject.connect(button, QtCore.SIGNAL(‘clicked()’),self.onClicked)