我的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?