如何在PyQt中实现QLCDNumber?

1 投票
1 回答
1300 浏览
提问于 2025-04-17 15:52

我正在为我的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)

撰写回答