Python QT開發(五)pyside2 使用sender()進行多按鍵監控

當一個界面中有多少按鈕需要輸入時,我們不可能每一個按鈕設計一個槽函數,所以就需要我們在同一個槽函數裏面對按鈕進行區別,這裏就需要用到sender(),sender()的返回值爲觸發這個事件的對象,比如我們定義0-9共10個按鈕,將按鈕對象名分別設置爲0-9,那麼當按鈕按下1之後,sender()就返回1這個對象,sender().text()就是對象名‘1’;

舉例如下:我們需要通過0-9輸入密碼,ui文件這裏就不做過多說明,就是一個widget裏面有10個按鈕

 

//窗口類
class CodeWindow(QWidget):
    def __init__(self):
        super(CodeWindow, self).__init__()
        #這裏引用一個自定義的窗口,窗口可以自行定義
        self.ui = Ui_codeUI()
        self.ui.setupUi(self)

        #數字按鍵signal
        self.ui.button0.clicked.connect(self.inputPasswd)
        self.ui.button1.clicked.connect(self.inputPasswd)
        self.ui.button2.clicked.connect(self.inputPasswd)
        self.ui.button3.clicked.connect(self.inputPasswd)
        self.ui.button4.clicked.connect(self.inputPasswd)
        self.ui.button5.clicked.connect(self.inputPasswd)
        self.ui.button6.clicked.connect(self.inputPasswd)
        self.ui.button7.clicked.connect(self.inputPasswd)
        self.ui.button8.clicked.connect(self.inputPasswd)
        self.ui.button9.clicked.connect(self.inputPasswd)

    #數字按鍵slot函數
    def inputPasswd(self):
        str_in = self.ui.codeEdit.text()
        #當密碼輸錯時,我們需要對顯示框進行初始化,並且將第一個按鍵的名稱寫入label顯示框
        if str_in == "密碼輸入錯誤":
            str_in = ''
            self.ui.codeEdit.setText(self.sender().text())
        #當正常輸入密碼時,顯示框的內容應該時之前輸入的內容 + 當前輸入的內容
        else:
            self.ui.codeEdit.setText(self.ui.codeEdit.text() + self.sender().text()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章