如何优雅地将许多信号连接到 PyQt5 中的一个函数?
How to elegantly connect many signals to a function in PyQt5?
我目前正在使用 PyQt5 构建一个界面,我想知道是否有一种优雅的方法可以将多个信号连接到同一个函数?
直接的解决方案是:
self.ui.button1.clicked.connect(self.Function)
self.ui.button2.clicked.connect(self.Function)
self.ui.button3.clicked.connect(self.Function)
self.ui.button4.clicked.connect(self.Function)
但是有更好、更易读的选项吗?例如,看起来像:
self.Function.connect(self.ui.button1.clicked,
self.ui.button2.clicked,
self.ui.button3.clicked,
self.ui.button4.clicked)
我也开始阅读有关 QSignalMapper
的内容,但如果可以避免它们,那就太好了。
提前致谢!
您可以创建一个函数,将元组或按钮列表作为参数,然后为每个按钮连接点击信号。
self.connect_buttons((self.ui.button1, self.ui.button2, self.ui.button3, self.ui.button4))
def connect_buttons(self, button_tup):
for button in button_tup:
button.clicked.connect(self.Function)
我目前正在使用 PyQt5 构建一个界面,我想知道是否有一种优雅的方法可以将多个信号连接到同一个函数?
直接的解决方案是:
self.ui.button1.clicked.connect(self.Function)
self.ui.button2.clicked.connect(self.Function)
self.ui.button3.clicked.connect(self.Function)
self.ui.button4.clicked.connect(self.Function)
但是有更好、更易读的选项吗?例如,看起来像:
self.Function.connect(self.ui.button1.clicked,
self.ui.button2.clicked,
self.ui.button3.clicked,
self.ui.button4.clicked)
我也开始阅读有关 QSignalMapper
的内容,但如果可以避免它们,那就太好了。
提前致谢!
您可以创建一个函数,将元组或按钮列表作为参数,然后为每个按钮连接点击信号。
self.connect_buttons((self.ui.button1, self.ui.button2, self.ui.button3, self.ui.button4))
def connect_buttons(self, button_tup):
for button in button_tup:
button.clicked.connect(self.Function)