Python 使用循环创建带有单击事件的pyqt5按钮

Python 使用循环创建带有单击事件的pyqt5按钮,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,如何使用“使用循环连接”创建按钮 list = ['apple','orange','banana','carrot'] for i,s in enumerate(list) list[i] = QtWidgets.QPushButton(self.scrollAreaWidgetContents) list[i].setText(s[0]) list[i].clicked.connect(lambda:getbuttontext(list[i].text())) 下面

如何使用“使用循环连接”创建按钮

list = ['apple','orange','banana','carrot']
for i,s in enumerate(list)
    list[i] = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
    list[i].setText(s[0])
    list[i].clicked.connect(lambda:getbuttontext(list[i].text()))
下面是getbuttontext函数:

def getbuttontext(n):
    print(n)
fruits = ['apple','orange','banana','carrot']
for i,s in enumerate(fruits)
    btn = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
    btn.setText(s[0])
    btn.clicked.connect(lambda checked, text=s : getbuttontext(text))
我的问题是,当我点击任何按钮时,函数会打印“胡萝卜” 如何修复它请


解决方案很简单,定义lambda函数的输入参数:

def getbuttontext(n):
    print(n)
fruits = ['apple','orange','banana','carrot']
for i,s in enumerate(fruits)
    btn = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
    btn.setText(s[0])
    btn.clicked.connect(lambda checked, text=s : getbuttontext(text))
注意:
我选中了,因为默认情况下,它是传递单击信号的参数。

请编辑您的问题并添加真实问题。不清楚你在问什么…你的问题是什么?PHP和你的问题有什么关系?给我一个函数,可以打印页面中每个按钮的文本loop@Derar什么按钮,什么循环?同时显示您试图解决的问题,请阅读SO规则:@Derar检查我的当前答案,您不应使用列表存储字符串和按钮。列表也是一个保留字