PyQt学习随笔:槽函数获取信号发送对象的方法

在PyQt中,相似控件发送的信号可以每个控件信号对应一个槽函数,也可以将相似控件的相同信号对应到一个槽函数,但如果槽函数相同,怎么区分信号是谁发送的呢?那就是在信号函数中使用sender()函数获取信号的发送对象。

案例:
设计一个计算器,要求点击相关按键完成计算任务。老猿将计算器的所有按键分为三类,一类是操作数据和符号(包括数字、点、运算符、括号),按下是在显示界面直接显示对应字;第二类是等号直接触发计算;最后一类是清除键,清除显示数据,复位计算器。

设计的界面及信号槽函数连接如下:
PyQt学习随笔:槽函数获取信号发送对象的方法_第1张图片
老猿将第一类按键全部映射到了主界面对象的槽函数CalObjPressed(),为了识别按键对应的字符,采用如下代码:

 def CalObjPressed(self):
        if  self.resultfinished:self.ClearInput() #如果上次计算出了结果则清屏
        pButton = self.sender() #取信号发射对象
        char = pButton.text() #取信号发射对象的显示字符
        self.CalculatorDisplay.insertPlainText(char) #将字符追加到显示部分显示
        self.expr += char  #将字符记录到计算表达式

使用如上代码,则按下第一类按键就在显示界面最后位置增加该字符。

运行效果图如下:
PyQt学习随笔:槽函数获取信号发送对象的方法_第2张图片

完整的代码请参考本文的CSDN资源: PyQt槽函数获取信号发送对象的演示代码:计算器Calculator.rar。

老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

请大家多多支持,点赞、评论和加关注!谢谢!**

你可能感兴趣的:(老猿Python)