PyQt学习随笔:槽函数获取信号发送对象的方法
在PyQt中,相似控件发送的信号可以每个控件信号对应一个槽函数,也可以将相似控件的相同信号对应到一个槽函数,但如果槽函数相同,怎么区分信号是谁发送的呢?那就是在信号函数中使用sender()函数获取信号的发送对象。
案例:
设计一个计算器,要求点击相关按键完成计算任务。老猿将计算器的所有按键分为三类,一类是操作数据和符号(包括数字、点、运算符、括号),按下是在显示界面直接显示对应字;第二类是等号直接触发计算;最后一类是清除键,清除显示数据,复位计算器。
设计的界面及信号槽函数连接如下:
老猿将第一类按键全部映射到了主界面对象的槽函数CalObjPressed(),为了识别按键对应的字符,采用如下代码:
def CalObjPressed(self):
if self.resultfinished:self.ClearInput() #如果上次计算出了结果则清屏
pButton = self.sender() #取信号发射对象
char = pButton.text() #取信号发射对象的显示字符
self.CalculatorDisplay.insertPlainText(char) #将字符追加到显示部分显示
self.expr += char #将字符记录到计算表达式
使用如上代码,则按下第一类按键就在显示界面最后位置增加该字符。
运行效果图如下:
完整的代码请参考本文的CSDN资源: PyQt槽函数获取信号发送对象的演示代码:计算器Calculator.rar。
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036
请大家多多支持,点赞、评论和加关注!谢谢!**