【发布时间】:2015-03-09 22:19:41
【问题描述】:
我正在使用 for 循环创建一系列按钮,我希望它们都在单击时触发相同的方法,但在该方法中我需要检查单击了哪个按钮。使用下面的代码,当单击任何按钮时,该方法始终认为单击了“按钮 4”,即使单击了另一个按钮。
如何更改我的代码以让“打印机”方法识别各个按钮?
import sys
from PySide import QtGui, QtCore
class MyTest( QtGui.QWidget ):
def __init__(self):
super(MyTest, self).__init__()
self.initUI()
def initUI(self):
hbox = QtGui.QHBoxLayout()
self.setLayout(hbox)
self.setWindowTitle('Buttons test')
self.show()
buttons = {}
for n in range(0, 5):
buttons[n] = QtGui.QPushButton()
buttons[n].setText('Button ' + str(n))
hbox.addWidget(buttons[n])
buttons[n].released.connect( lambda : self.printer( object_name=buttons[n].text() ) )
def printer(self, object_name):
print object_name
def main():
app = QtGui.QApplication(sys.argv)
ex = MyTest()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我正在使用 PySide 执行此操作,但我认为这与 PyQt 的解决方案相同。
【问题讨论】: