PyQt(Python+Qt)學習隨筆:Designer中QDialogButtonBox確認clicked信號是哪個按鈕發送的方法


一、引言

QDialogButtonBox本身只提供4種信號,分別是accepted、rejected、clicked和helpRequested,在《PyQt(Python+Qt)學習隨筆:Designer中的QDialogButtonBox的accepted、rejected和helpRequested信號》介紹了這些按鈕中有部分會產生相同的accepted或rejected信號,有部分不會產生accepted或rejected信號,那么怎么確認點擊了按鈕只能通過clicked信號。

在《PyQt(Python+Qt)學習隨筆:Designer中的QDialogButtonBox的clicked信號參數QAbstractButton *解決辦法》介紹了怎么建立QDialogButtonBox的clicked信號與槽函數的連接的方法,並介紹該信號對應槽函數的參數button就是一個QPushButton類型的按鈕,可以通過button.text()判斷點擊的按鈕,實際上除了使用button.text()這種方法來識別點擊按鈕之外,還有一種QDialogButtonBox提供的方法來判斷點擊的按鈕的方法,這個方法就是通過QDialogButtonBox.button()方法。

二、通過兩種方法確認點擊button的實現

下面代碼為QDialogButtonBox的clicked信號連接的槽函數代碼:

 def buttonBoxClicked(self,button):
        standButtonId = [QDialogButtonBox.Ok, QDialogButtonBox.Open, QDialogButtonBox.Save, QDialogButtonBox.Cancel,
                         QDialogButtonBox.Close, QDialogButtonBox.Discard, QDialogButtonBox.Apply,
                         QDialogButtonBox.Reset, QDialogButtonBox.RestoreDefaults, QDialogButtonBox.Help,
                         QDialogButtonBox.SaveAll, QDialogButtonBox.Yes, QDialogButtonBox.YesToAll, QDialogButtonBox.No,
                         QDialogButtonBox.NoToAll, QDialogButtonBox.Abort, QDialogButtonBox.Retry,
                         QDialogButtonBox.Ignore]
        standButtonIdName = ["QDialogButtonBox.Ok","QDialogButtonBox.Open","QDialogButtonBox.Save","QDialogButtonBox.Cancel","QDialogButtonBox.Close","QDialogButtonBox.Discard","QDialogButtonBox.Apply","QDialogButtonBox.Reset","QDialogButtonBox.RestoreDefaults","QDialogButtonBox.Help","QDialogButtonBox.SaveAll","QDialogButtonBox.Yes","QDialogButtonBox.YesToAll","QDialogButtonBox.No","QDialogButtonBox.NoToAll","QDialogButtonBox.Abort","QDialogButtonBox.Retry","QDialogButtonBox.Ignore"]
        standButtonName = ["OK", "Open", "Save", "Cancel", "Close", "Discard", "Apply", "Reset", "Restore Defaults",
                           "Help", "Save All", "&Yes", "Yes to &All", "&No", "N&o to All", "Abort", "Retry", "Ignore"]
		#注意standButtonName中部分含有快捷鍵的定義,快捷鍵由“ALT+字母” 組成,字母為上述名字中有&符號后面的字母。
                          
        #通過按鈕名字btnName找按鈕的buttonID
        btnName = button.text()
        try:index = standButtonName.index(btnName)
        except Exception as e: 
            index = -1
            print(f"Not found buttonName:{btnName}")
        else:
            print(f"通過按鈕名字{btnName}找到的buttonID:{standButtonIdName[index]}")

        # 通過按鈕對象確認點擊按鈕的buttonID
        found = False
        index = -1
        for btnid in standButtonId: 
            index += 1
            btn = self.buttonBox.button(btnid) #buttonBox為QDialogButtonBox的實例對象
            if btn == button:
                found = True
                break
        if found:
            print(f"通過按鈕對象確認點擊按鈕為:{standButtonIdName[index]}")

老猿Python,跟老猿學Python!

博文目錄

博客地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM