发出QpushButton对象列表中每个n元素的每个信号

时间:2017-10-08 13:30:11

标签: python-3.x pyqt pyqt4 pyqt5

我有QPushButton.i列表希望能够使列表中的所有按钮以更简单的方式发出信号。

这是我的代码:

 def btn_click(self):
self.menu_list[0].clicked.connect(lambda: self.add_cart(self.menu_list[0]))
self.menu_list[1].clicked.connect(lambda: self.add_cart(self.menu_list[1]))
self.menu_list[2].clicked.connect(lambda: self.add_cart(self.menu_list[2]))
self.menu_list[3].clicked.connect(lambda: self.add_cart(self.menu_list[3]))
self.menu_list[4].clicked.connect(lambda: self.add_cart(self.menu_list[4]))
self.menu_list[5].clicked.connect(lambda: self.add_cart(self.menu_list[5]))
def add_cart(self):
print(b.text())

1 个答案:

答案 0 :(得分:1)

你可以循环执行:

主要

def btn_click(self):
    for button in menu_list:
        button.clicked.connect(self.add_cart)

def add_cart(self):
    b = self.sender()
    print(b.text())

替代

def btn_click(self):
    for button in self.menu_list:
        button.clicked.connect(lambda btn=button: self.add_cart(btn))

请注意,您需要使用btn =按钮进行关闭,否则所有按钮都会指向最后一个按钮。

ps:有关主要方式的更多解释,请阅读下面的@ekhumoro评论