您可以通過使用partial
做到這一點。
使用partial
,您將傳遞您想顯示在.connect()
中的文字。
qbtn1.clicked.connect(partial(self.labeltext, "A"))
qbtn2.clicked.connect(partial(self.labeltext, "B"))
你也將需要調整labeltext
函數簽名接受你希望顯示的文本。
def labeltext(self, text)
,而不是標準
def labeltext(self)
一個完整的演示看起來像這樣(從zetcode借來的快速樣本代碼):
import sys
from PyQt4 import QtGui, QtCore
from functools import partial
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.lbl = QtGui.QLabel(self)
qbtn1 = QtGui.QPushButton('Set "A"', self)
qbtn2 = QtGui.QPushButton('Set "B"', self)
self.lbl.move(20, 100)
qbtn1.move(20,40)
qbtn2.move(20,60)
qbtn1.clicked.connect(partial(self.labeltext, "A"))
qbtn2.clicked.connect(partial(self.labeltext, "B"))
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('Demo')
self.show()
def labeltext(self, text):
self.lbl.setText(text)
self.lbl.adjustSize()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
公告我們正在調用的函數現在需要兩個參數self
和text
。
當應用程序第一次啓動時,標籤是空的:
謝謝。出於某種原因,我在python ide中中止(斷開)消息 – michigansqllite123