【发布时间】:2022-01-23 04:04:48
【问题描述】:
我正在尝试制作一个仅接受 1 到 12 数字的 Lineedit。但即使使用 setValidator,代码也无法限制数字。这是具有LineEdit 的函数。(lineEdit 不应接受不在 1-12 之间的数字)
使用Pyqt5 version 5.15.2
操作系统是“Windows 7”
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
class Ui_mainWindow(QMainWindow):
def setupUi(self, mainWindow):
mainWindow.setObjectName("mainWindow")
mainWindow.resize(562, 605)
self.centralwidget = QtWidgets.QWidget(mainWindow)
self.centralwidget.setObjectName("centralwidget")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(176, 91, 101, 31))
self.lineEdit.setValidator(QtGui.QIntValidator(1, 12, self))
self.labelOutput = QtWidgets.QLabel(self.centralwidget)
self.labelOutput.setGeometry(QtCore.QRect(176, 122, 101, 16))
self.listWidget = QtWidgets.QListWidget(self.centralwidget)
self.listWidget.setGeometry(QtCore.QRect(10, 182, 541, 351))
self.btnEnviar = QtWidgets.QPushButton(self.centralwidget)
self.btnEnviar.setGeometry(QtCore.QRect(500, 149, 51, 31))
self.btnEnviar.clicked.connect(self.print)
mainWindow.setCentralWidget(self.centralwidget)
QtCore.QMetaObject.connectSlotsByName(mainWindow)
_translate = QtCore.QCoreApplication.translate
mainWindow.setWindowTitle(_translate("mainWindow", "title"))
self.lineEdit.setText(_translate("mainWindow", "01"))
self.btnEnviar.setText(_translate("mainWindow", "Send"))
self.labelOutput.setText(_translate("mainWindow", "Output Number:"))
mainWindow.show()
def print(self):
self.listWidget.addItem(self.lineEdit.text())
comando = 'MS01INVE'+ self.lineEdit.text() + '\r'
self.listWidget.addItem(comando)
app = QApplication([])
mainWindow = QMainWindow()
ui = Ui_mainWindow()
ui.setupUi(mainWindow)
app.exec_()
【问题讨论】:
-
请解释您所说的“不起作用”是什么意思,并提供一个实际的minimal reproducible example。
-
您提供的代码在概念上应该可以工作,所以问题一定出在其他地方,这就是为什么您必须提供 MRE:我们必须能够复制、粘贴和运行您的代码(可能没有任何实质性修改)并能够重现您的问题。现在你的代码不仅不会重现任何东西(任何事情都会发生,因为只有一个类声明),而且它还会引发 TypeError 异常并使程序崩溃。
-
等等...您是否尝试在该范围内输入多个数字,同时,例如“1 10 8 5 11”?
-
我尝试输入 1 到 12 之间的数字,代码必须只接受数组 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
-
上面的代码就是这样做的。如果我输入 3,则输入被接受,如果我再次尝试输入,则没有变化。你能写出大于 12 的数字吗?如果是这种情况,请按要求提供 MRE。
标签: python python-3.x pyqt5 qlineedit