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()

 

你可能感兴趣的:(qt)