Pyqt将函数绑定到dinamically生成的按钮

时间:2015-09-28 21:23:41

标签: qt python-2.7 lambda pyqt4 dynamically-generated

使用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))

0 个答案:

没有答案