繁体   English   中英

使用 PyQt5 lineEdit 小部件,是否有任何简单的方法只能使用整数值?

[英]Using PyQt5 lineEdit widget, is there any simple way only integer values are available?

我尝试构建一个代码,在 lineEdit Widget 上输入某个数字,然后按下按钮 Widget,我可以将该值作为整数类型获取。 但我得到的值类型仍然是字符串。 有没有什么漂亮的方法可以将 lineEdit Widget 中的值类型限制为整数? 另外,如果lineEdit中的值类型不是整数,是否会弹出Messagebox提示输入错误值?

import sys
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QBoxLayout
from PyQt5.QtWidgets import QLabel
from PyQt5.QtWidgets import QLineEdit, QPushButton
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import Qt
from PyQt5 import QtGui

class Form(QWidget):
    def __init__(self):
        QWidget.__init__(self, flags=Qt.Widget)
        self.init_widget()

    def init_widget(self):

        form_lbx = QBoxLayout(QBoxLayout.TopToBottom, parent=self)
        self.setLayout(form_lbx)

        self.le = QLineEdit()
        self.btn = QPushButton("connect")
        self.btn.clicked.connect(self.func1)

        form_lbx.addWidget(self.le)
        form_lbx.addWidget(self.btn)

    def func1(self):
        value = self.le.text()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = Form()
    form.show()
    exit(app.exec_())

您可以使用QIntValidator()将输入限制为仅整数。 这样您就知道输入将只包含数字,并且您可以将文本转换为 int 而不必担心错误(只要 LineEdit 不为空)。

self.le.setValidator(QIntValidator())

# Accessing the text
value = int(self.le.text())

要了解更多信息,请查看setValidator方法。 您可能还想考虑使用QSpinBox ,它是为整数设计的,可以直接使用QSpinBox.value()返回一个 int

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM