如何以整数形式检索 QLabel 值
How to retrieve a QLabel Value as an Integer
我已经编写了一个程序,可以从命令行控制 raspberry pi 上的 PWM 输出,但我现在想使用 GUI 来控制它。
我正在使用 PyQt5 设计 GUI 来控制 PWM 输出,我想从使用刻度盘调整的标签中检索值,然后用于更改我的 PWM 输出的占空比。
我正在使用 raspberry pi 3 Model B+。
我在下面附上了我的代码的相关部分:
设置 Main Window - 使用 pyuic.[=12 时发生的标准 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
我收到类型错误:无法排序的类型 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 转换,它会自动在你的标签中设置任何值为文本值或空字符串,您只需使用 setNum.
将其转换为整数
我已经编写了一个程序,可以从命令行控制 raspberry pi 上的 PWM 输出,但我现在想使用 GUI 来控制它。
我正在使用 PyQt5 设计 GUI 来控制 PWM 输出,我想从使用刻度盘调整的标签中检索值,然后用于更改我的 PWM 输出的占空比。
我正在使用 raspberry pi 3 Model B+。
我在下面附上了我的代码的相关部分:
设置 Main Window - 使用 pyuic.[=12 时发生的标准 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
我收到类型错误:无法排序的类型 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 转换,它会自动在你的标签中设置任何值为文本值或空字符串,您只需使用 setNum.
将其转换为整数