gpt4 book ai didi

python - 如何以整数形式检索 QLabel 值

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:06 29 4
gpt4 key购买 nike

我已经编写了一个程序,可以从命令行控制树莓派上的 PWM 输出,但我现在想使用 GUI 来控制它。

我正在使用 PyQt5 设计 GUI 来控制 PWM 输出,我想从标签中检索值,该值通过刻度盘进行调整,然后用于更改 PWM 输出的占空比。

我使用的是树莓派 3 B+ 型。

我已在下面附上代码的相关部分:

设置主窗口 - 使用 pyuic 时发生的标准 ui 到 py 转换。

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.dial = QtWidgets.QDial(self.centralwidget)
self.dial.setObjectName("dial")
self.verticalLayout.addWidget(self.dial)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)
self.dial.valueChanged['int'].connect(self.label.setNum)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

尝试从标签检索值并最终更新占空比的函数。

    def ChangeSpeed(self):
self.My_PWM.start(0)
while True:
if 0 < self.ui.label:
self.My_PWM.ChangeDutyCycle(self.ui.label)
elif self.ui.label<0:
self.My_PWM.ChangeDutyCycle(0)
print("Programme Ended")
break

我收到类型错误:unorderable tyoes int()

这个问题不仅仅是直接转换,因为它不允许将 QLabel 值转换为整数。

谢谢!

最佳答案

要解决这个问题,我必须将标签的代码从“self.label.setText...”更改为“self.label.setNum(0)”,这将起始值设置为零,然后使用 int(self.ui.label.text()) 进行标准整数转换。我希望这是有道理的

相关部分代码如下:

  def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setNum(0)
self.pushButton.setText(_translate("MainWindow", "Set Speed"))

此后我添加了一个按钮来设置占空比。

这是我的代码的转换部分:

def ChangeSpeed(self):
self.My_PWM.start(0)
if 0 < int(self.ui.label.text()):
self.My_PWM.ChangeDutyCycle(int(self.ui.label.text()))
elif int(self.ui.label.text())<0:
self.My_PWM.ChangeDutyCycle(0)
print("Programme Ended")

我希望这对于那些希望将 Qlabel 转换为 int 的人来说是有意义的,你必须小心,如果你像我一样使用 QtDesigner 并执行 pyuic5 转换,它会自动将标签中的任何值设置为 a文本值或空字符串,您只需使用 setNum 将其转换为整数即可。

关于python - 如何以整数形式检索 QLabel 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53285355/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com