【问题标题】:Auto add dashes to Line Edit PyQt5自动将破折号添加到 Line Edit PyQt5
【发布时间】:2021-01-19 07:50:46
【问题描述】:

是否可以在用户输入数据时向 PyQt5 Line Edit 自动添加破折号,例如,如果用户想输入 123456789012345,而用户输入时应该输入 12345-67890-12345。此外,如果用户在正确的位置输入-,它应该被接受。这在tkinter 中是相当可实现的,使用re(问题here),但我认为它可能可以用Qt 也是。

if __name__ == '__main__':
    app = QApplication(sys.argv)
    le = QLineEdit()
    le.show()
    sys.exit(app.exec_())

Ps:我在 Qt Designer 中设计了 GUI。

【问题讨论】:

    标签: python pyqt pyqt5 python-re qlineedit


    【解决方案1】:

    输入掩码:QString

    此属性保存验证输入掩码。

    更多https://doc.qt.io/qt-5/qlineedit.html#inputMask-prop

    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    
    class MainWindow(QtWidgets.QMainWindow):
        def __init__(self):
            super().__init__()
            centralWidget = QtWidgets.QWidget()
            self.setCentralWidget(centralWidget)
    
            self.lineEdit = QtWidgets.QLineEdit()
            self.lineEdit.setAlignment(QtCore.Qt.AlignCenter)
            self.lineEdit.editingFinished.connect(self.editingFinished)
            
            self.lineEdit.setInputMask("999-9999999;.")                                 # +++
            
            grid = QtWidgets.QGridLayout(centralWidget)
            grid.addWidget(self.lineEdit) 
            
        def editingFinished(self):
            print(f"{self.lineEdit.text()} -> {self.lineEdit.text().replace('-', '')}")
            
    
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        app.setFont(QtGui.QFont("Times", 22, QtGui.QFont.Bold))
        w = MainWindow()
        w.show()
        sys.exit(app.exec_())
    

    【讨论】:

    • 没想到会这么简单。有什么方法可以改变插入光标的粗细和点?
    • @CoolCloud 删除 app.setFont(QtGui.QFont("Times", 22, QtGui.QFont.Bold))
    • 谢谢!但我也注意到,如果我尝试捕获空框值,它是 '--' 可以设置为 '' 吗?因为如果盒子是空的或者以后不是,我可能会做一些评估。我认为使用'--' 作为空的定义会很好,但是还有其他方法吗?
    • 只是对您包含的链接有一点疑问,链接中的格式是否也与 python 相同?
    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 2013-06-03
    • 2015-09-29
    • 2014-07-25
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多