自动添加破折号到行编辑 PyQt5

Auto add dashes to Line Edit PyQt5

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

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

Ps: 我在Qt Designer里面设计了GUI。

inputMask : QString

This property holds the validation input mask.

更多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_())