使用PyQT库我目前遇到的问题是将函数绑定到由循环产生的动态生成的按钮。
到目前为止,我已设法生成按钮并使用lambda命令将函数绑定到它们。问题是,由于我需要每个按钮打开一个不同的文件,我发现自己处于一个奇怪的情况,因为所有按钮都打开了同一个按钮。分配给变量的最后一个值。
有关如何解决问题的想法?作为最后一点,对于愚蠢的错误,抱歉。我是OOP和PyQT的新手。
def searchTheStuff(self):
found = 0
data = MainWindow.intermediateCall()
f1 = open('Path.txt', 'r')
path = f1.read()
f1.close()
Yinc = 25
Y = 40
X = 20
results = 0
for path, dirs, files in os.walk(path, topdown=True):
for name in files:
if name.endswith('.txt'):
fullpath = os.path.join(path, name)
mail = open_close(fullpath)
if mail.find(data) != -1 and results<3:
found = 1
self.buttons.append(QtGui.QPushButton(self))
print fullpath
command = lambda : webbrowser.open()
self.buttons[-1].clicked.connect(command)
self.buttons[-1].setText(_translate("self", name, None))
self.buttons[-1].setGeometry(QtCore.QRect(X, Y, 220, 20))
results = results+1
if results == 33:
X = 260
Y = 15
Y = Y + Yinc
if found == 0:
self.label = QtGui.QLabel(self)
self.label.setGeometry(QtCore.QRect(20, 40, 321, 21))
self.label.setText(_translate("self", "No templates have been found:", None))