将多个按钮连接到for循环中的同一个函数

2024-09-29 23:28:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大约25-30个按钮,我必须连接到相同的功能。我不喜欢手工写这些

self.__mybutton_1.clicked.connect(self.__MyConnectedFunction)

我的所有按钮都有相同的命名布局,所以下一个按钮将是__mybutton_2。我想做这样的事

^{pr2}$

在python中这样做是可能的吗?如何做到这一点?在


Tags: self功能connect布局按钮命名手工clicked
3条回答

如果所有按钮都是同一小部件/窗口的子级,则可以使用^{}方法动态获取按钮列表:

btns = self.findChildren(QtGui.QPushButton, QtCore.QRegExp(r'__mybutton_\d+'))
for btn in btns:
    btn.connect(self._MyConnectedFunction)

这还假设您将按钮的objectName设置为与它们的python变量名相同的名称(.ui文件应该已经这样做了)。在

这样做的好处是,以后可以添加更多按钮,只要遵守命名约定(__my_button_#),连接代码就会自动连接它。在

有可能,但不推荐。您可以使用eval("self.__mybutton_{}".format(i)).connect(self.__MyConnectedFunction),但最好创建一个按钮列表并使用buttons[i]。在

是的,您可以使用getattr执行您想要的操作:

for i in range(10):
    button = getattr(self, '__mybutton_%s' % i)
    button.clicked.connect(self.__MyConnectedFunction)

相关问题 更多 >

    热门问题