如何在PyQt中实现QLCDNumber?
我正在为我的Python脚本设计一个图形用户界面(GUI),这个脚本使用PySerial来实现一些串口接口功能。我希望这个界面能显示一些参数,从一个来源读取数据。
比如,这个GUI需要显示当前的电压,这个电压用一个叫做volt_act的参数来表示。
我想把QLCDNumber(一个显示数字的控件)lcdVoltage和下面的代码连接起来:
self.connect(self, QtCore.SIGNAL("selfVoltage"), self.lcdVoltage, QtCore.SLOT("display(int)"))
然后在我想读取电压的地方,我会发出这个参数:
self.emit(QtCore.SIGNAL("selfVoltage"), volt_act)
但是这样并没有成功。我该如何正确地实现一个QLCDNumber,让这个参数在我发出的时候实时更新呢?
1 个回答
2
来自 文档:
短路信号没有参数列表,也没有括号。
短路信号只能连接到用Python实现的槽(也就是处理信号的函数)。它们不能连接到Qt的槽或者那些包装了Qt槽的Python可调用对象。
如果你打算使用Qt的槽,你需要明确声明变量类型:
self.connect(self, QtCore.SIGNAL("selfVoltage(int)"), self.lcdVoltage, QtCore.SLOT("display(int)"))
还有
self.emit(QtCore.SIGNAL("selfVoltage(int)"), volt_act)
不过,我真的建议你使用 新风格信号。
首先,你需要把信号定义为类的变量:
voltage = QtCore.pyqtSignal(int)
然后连接它:
self.voltage.connect(self.lcdVoltage.display)
最后,你可以发出信号:
self.voltage.emit(volt_act)