在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!")
加载中,请稍候......