加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Python学习笔记<六>:如何给槽函数传参数

(2017-06-17 00:03:57)
标签:

槽函数

信号与槽

lambada

按键响应

pyqt

分类: 嵌入式开发
在pyqt里面,有多个按钮,通过信号与槽响应各个按钮。可是,如果按钮很多的时候,槽函数区别不大,该怎么办?每个按钮对应一个槽函数,像下面的写法?

        self.connect(self.btn_bed01, QtCore.SIGNAL(_fromUtf8("clicked()")), self.writeComPortAddr01)
        self.connect(self.btn_bed02, QtCore.SIGNAL(_fromUtf8("clicked()")), self.writeComPortAddr02)
        self.connect(self.btn_bed03, QtCore.SIGNAL(_fromUtf8("clicked()")), self.writeComPortAddr03)
        self.connect(self.btn_bed03, QtCore.SIGNAL(_fromUtf8("clicked()")), self.writeComPortAddr04)
        self.connect(self.btn_bed05, QtCore.SIGNAL(_fromUtf8("clicked()")), self.writeComPortAddr05)
        self.connect(self.btn_bed06, QtCore.SIGNAL(_fromUtf8("clicked()")), self.writeComPortAddr06)
        self.connect(self.btn_bed07, QtCore.SIGNAL(_fromUtf8("clicked()")), self.writeComPortAddr07)
def writeComPortCmd01(self):
        self.thread.stop()
       
        sendAddr = int(dictAddr2['bed01'])
        ser.write(0xfe)  //数据头      
//接收到按键信号后,会将当前按键的序号,发送出去
        ser.write(sendAddr &0xff)
        ser.write((sendAddr >>8)&0xff)
        ser.write(0x00)
        ser.write(0x00)
        ser.write(0x00)
        ser.write(0xff)  //数据尾
        self.thread.start() 

如果这里,允许槽函数带个参数传入,那就可以共用一个槽函数了,极大的简化了代码。网上找了一遍,找到一个可用的例子。例子链接:http://blog.csdn.net/a359680405/article/details/45246605
《Rapid GUI Program with Python and QT》 P143例子

class MainWindow(QMainWindow, Ui_MainWindow):

    def __init__(self, parent=None):
        
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)     

        #self.connect(self, QtCore.SIGNAL("clicked()"), self.emitClicked)
        
        self.btn1.clicked.connect(lambda: self.on_button('bed01')) 
        self.btn2.clicked.connect(lambda: self.on_button('bed02')) 
        
    def on_button(self, str):
        print('Button {0} clicked'.format(str))  
        
    @pyqtSlot()
    def on_btn1_clicked(self):
        """
        Slot documentation goes here.
        """
        # TODO: not implemented yet
        print("key 1 press!")
    
    @pyqtSlot()
    def on_btn2_clicked(self):
        """
        Slot documentation goes here.
        """
        # TODO: not implemented yet
        print("key 2 press!")

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有