2024-09-29 23:28:26 发布
网友
我有大约25-30个按钮,我必须连接到相同的功能。我不喜欢手工写这些
self.__mybutton_1.clicked.connect(self.__MyConnectedFunction)
我的所有按钮都有相同的命名布局,所以下一个按钮将是__mybutton_2。我想做这样的事
__mybutton_2
在python中这样做是可能的吗?如何做到这一点?在
如果所有按钮都是同一小部件/窗口的子级,则可以使用^{}方法动态获取按钮列表:
btns = self.findChildren(QtGui.QPushButton, QtCore.QRegExp(r'__mybutton_\d+')) for btn in btns: btn.connect(self._MyConnectedFunction)
这还假设您将按钮的objectName设置为与它们的python变量名相同的名称(.ui文件应该已经这样做了)。在
objectName
.ui
这样做的好处是,以后可以添加更多按钮,只要遵守命名约定(__my_button_#),连接代码就会自动连接它。在
__my_button_#
有可能,但不推荐。您可以使用eval("self.__mybutton_{}".format(i)).connect(self.__MyConnectedFunction),但最好创建一个按钮列表并使用buttons[i]。在
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)
如果所有按钮都是同一小部件/窗口的子级,则可以使用^{} 方法动态获取按钮列表:
这还假设您将按钮的
objectName
设置为与它们的python变量名相同的名称(.ui
文件应该已经这样做了)。在这样做的好处是,以后可以添加更多按钮,只要遵守命名约定(
__my_button_#
),连接代码就会自动连接它。在有可能,但不推荐。您可以使用
eval("self.__mybutton_{}".format(i)).connect(self.__MyConnectedFunction)
,但最好创建一个按钮列表并使用buttons[i]
。在是的,您可以使用getattr执行您想要的操作:
相关问题 更多 >
编程相关推荐