0
我在窗體上有幾個複選框,我不想爲每個項目編寫單獨的事件處理程序,因爲它們都將實現相同的邏輯。相反,我想寫一個事件處理程序,它將知道點擊了哪個複選框。PyQt,Qt,一個事件處理程序,處理很多項目
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
謝謝。