PyQt5-在循环中创建窗口小部件时信号/插槽未正确连接

时间:2018-07-25 15:39:59

标签: python qt pyqt pyqt5

我的PyQt5程序中有一个错误,该错误已在以下示例应用程序中复制:

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def testPrint(self, out):
        print(str(out))

    def initUI(self):

        mainLayout = QVBoxLayout()

        for x in range(10):
            button = QPushButton("Test " + str(x))
            button.clicked.connect(lambda: self.testPrint(x))
            mainLayout.addWidget(button)

        self.setLayout(mainLayout)
        self.setWindowTitle("Example")
        self.show()

def main():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

此示例程序创建一个包含10个按钮的窗口,单击该按钮应显示其编号(0-9)。但是,它们在单击时都显示9。

我做错什么了吗,还是有更好的方法来制作不确定数量的小部件并将它们连接到lambda?

0 个答案:

没有答案