PyQt的,Qt中,一个事件处理程序中的大量项目工作
-
19-09-2019 - |
题
我有我的窗体上的情侣复选框,我不想写单独的事件处理程序的每个,因为它们都将执行相同的逻辑。相反,我想写只有一个事件处理程序,将了解复选框被点击的东西。
E.g。在Delphi我可以用这种方式:
function click_handler(sender):
begin
checked_box := sender.tag;
end;
下面记得在一些变量(标签属性在Delphi IDE手动设置)。
当前选中的框数我搜索并不能找到我怎么能实现这个使用Qt,因为事件处理程序没有sender
说法。
我实现像这样,但它不是方便:
# assign handlers (n assignments)
checkbox_1.clicked.connect(self.cb_1_click)
...
checkbox_<n>.clicked.connect(self.cb_<n>_click)
# separate handler for each check box (n functions, doing the same stupid work)
def cb_1_click:
self.cb_click(sender=1)
...
def cb_<n>_click:
self.cb_click(sender=n)
# main check box click logic (1 function)
def cb_click(sender):
# do something common for all checkboxes
感谢您。
解决方案
您可以使用的QObject ::发送者()在槽找出是谁发出的信号。结果 你可能也想看看 QSignalMapper 这正好用于解决这些问题
不隶属于 StackOverflow