[英]How to make that Pyqt5 LineEdit accepts only numbers
目前,我正在使用 python 和 PYQT5 开发一个程序,其中用户输入只能是数字。 问题是我不知道该怎么做。 例如当我得到这个变量时
VAR_1=float(self.ui.lineEdit.text())
我需要输入的文本只是一个数字。 我的意思是当用户试图写一个字母 o 符号时什么也没有发生。
使用/尝试setValidator或setInputMask方法
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class ButtonName(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Example - Validator")
self.setGeometry(800, 200, 200, 200)
self.UI()
self.layouts()
self.show()
def UI(self):
self.lbl_integer = QLabel("Integer Validator")
self.textbox_integervalidator = QLineEdit()
self.textbox_integervalidator.setPlaceholderText("upto 3 digit value only accept")
self.textbox_integervalidator.setValidator(QIntValidator(1, 999, self))
self.lbl_double = QLabel("Double Validator")
self.textbox_doublevalidator = QLineEdit()
self.textbox_doublevalidator.setValidator(QDoubleValidator(0.99, 99.99, 2))
self.lbl_regexp = QLabel("RexExp Validator")
self.textbox_regexpvalidator = QLineEdit()
reg_ex_1 = QRegExp("[0-9]+.?[0-9]{,2}") # double
# reg_ex_2 = QRegExp("[0-9]{1,5}") # minimum 1 integer number to maxiumu 5 integer number
# reg_ex_3 = QRegExp("-?\\d{1,3}") # accept negative number also
# reg_ex_4 = QRegExp("")
self.textbox_regexpvalidator.setValidator(QRegExpValidator(reg_ex_1))
def layouts(self):
mainlayout = QVBoxLayout()
mainlayout.addWidget(self.lbl_integer)
mainlayout.addWidget(self.textbox_integervalidator)
mainlayout.addWidget(self.lbl_double)
mainlayout.addWidget(self.textbox_doublevalidator)
mainlayout.addWidget(self.lbl_regexp)
mainlayout.addWidget(self.textbox_regexpvalidator)
self.setLayout(mainlayout)
def main():
app = QApplication(sys.argv)
mainwindow = ButtonName()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
尝试为您的行编辑制作一个蒙版:
self.lineEdit.setInputMask("00")
当您在 Mask 中输入“0”时,代码会理解它只能是数字。 放置的零数量将是 lineedit 将接受的房屋数量。 在这种情况下如何和“00”行编辑接受两个房子(十的房子)
你可以这样试试
self.ui.lineEdit.textChanged.connect(self.accept_only_numbers)
def accept_only_numbers(self):
VAR_1=float(self.ui.lineEdit.text())
if VAR_1.isnumeric() == True:
print("ok is number")
else:
VAR_1.clear()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.