|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大家好,
最近用pyqt4 写界面,其中用到了QCheckBox,界面是和设备通信的,当勾选复选框时会发送相应的状态命令给设备,同时界面运行时也会一直读取设备的状态,因此当打开界面的时候,如果读取到对应的状态位已经置1,则复选框应该勾上。现在我的问题是,当打开界面后如果读取到的状态位已经置1,勾选框是勾上了,但同时又触发了发送命令,而我想要的是只有点击复选框时才触发发送命令,请高手指点迷津。
- import sys
- from PyQt4 import QtCore, QtGui
-
- class MainWindow(QtGui.QWidget):
-
- def __init__(self, parent = None):
- QtGui.QWidget.__init__(self, parent)
-
- self.setGeometry(200, 200, 350, 80)
- self.setWindowTitle('Checkbox test')
- layout = QtGui.QHBoxLayout()
- self.cb1 = QtGui.QCheckBox("&Checkbox1", self)
- layout.addWidget(self.cb1)
-
- self.cb2 = QtGui.QCheckBox("&Checkbox2", self)
- layout.addWidget(self.cb2)
- self.setLayout(layout)
-
- self.connect(self.cb1, QtCore.SIGNAL('stateChanged(int)'), lambda:self.mycommand('RunEn1',self.cb1.isChecked()))
- self.connect(self.cb2, QtCore.SIGNAL('stateChanged(int)'), lambda:self.mycommand('RunEn2',self.cb2.isChecked()))
- def feedback(self):
- '''此函数用于实时刷新数据用,未详细写出'''
- if en1:
- self.cb1.setChecked(True) ####如果状态位置1,则复选框勾上,但同时又会触发发送命令
- else:
- self.cb1.setChecked(False)
- if en2:
- self.cb2.setChecked(True)
- else:
- self.cb2.setChecked(False)
-
- def mycommand(self, cmd,value):
- if value:
- sendcommand(cmd+'=1')
- else:
- sendcommand(cmd+'=0')
- def sendcommand(cmd):
- print(cmd)
-
-
- app = QtGui.QApplication(sys.argv)
- main = MainWindow()
- main.show()
- sys.exit(app.exec_())
复制代码 |
|