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

Emit every signals for each n element in list of QpushButton object

我有 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())

你可以循环执行:

主要

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=button,否则所有按钮都会参考最后一个。

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