当前位置:   article > 正文

python pyqt5 QLineEdit 限制输入特殊字符,输入自动删除并提示_qlineedit限制文件名特殊字符输入

qlineedit限制文件名特殊字符输入

功能:

1.限制输入特殊字符,输入自动删除并提示

2.限制输入关键字,输入修改字体颜色会红色并提示

效果图:

代码:

  1. import re
  2. import os
  3. from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QVBoxLayout, QToolTip, QLabel, QMessageBox
  4. from PyQt5.QtGui import QPalette, QColor, QFont
  5. from PyQt5.QtCore import Qt
  6. def is_valid_filename(filename):
  7. """
  8. 检查文件名是否有效
  9. """
  10. if len(filename) > 255:
  11. return "文件名长度不能超过 255 个字符"
  12. if filename.endswith(' '):
  13. return "文件名不能以空格结尾"
  14. if filename.startswith('.'):
  15. return "文件名不能以句点开头"
  16. invalid_chars = r'[\\/:*?"<>|]'
  17. if re.search(invalid_chars, filename):
  18. return "文件名不能包含以下任何字符:\\ / : * ? \" < > |"
  19. reserved_names = {'CON', 'PRN', 'AUX', 'NUL', 'COM1', 'COM2', 'COM3', 'COM4', 'COM5',
  20. 'COM6', 'COM7', 'COM8', 'COM9', 'LPT1', 'LPT2', 'LPT3', 'LPT4',
  21. 'LPT5', 'LPT6', 'LPT7', 'LPT8', 'LPT9'}
  22. if os.name == 'nt' and filename.upper() in reserved_names:
  23. return "文件名不能使用以下保留字符来命名文件:CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8 和 LPT9"
  24. return ""
  25. class Example(QWidget):
  26. def __init__(self):
  27. super().__init__()
  28. self.initUI()
  29. def initUI(self):
  30. self.lineedit = QLineEdit(self)
  31. vbox = QVBoxLayout(self)
  32. vbox.addWidget(self.lineedit)
  33. self.lineedit.textChanged.connect(self.check_filename)
  34. self.setGeometry(300, 300, 250, 150)
  35. self.setWindowTitle('Filename Validator')
  36. self.show()
  37. def check_filename(self, text):
  38. errormsg = is_valid_filename(text)
  39. if errormsg:
  40. QToolTip.setFont(QFont("SansSerif", 10))
  41. QToolTip.showText(self.lineedit.mapToGlobal(self.lineedit.rect().bottomLeft()), errormsg)
  42. palette = QPalette()
  43. palette.setColor(QPalette.Text, QColor(Qt.red))
  44. self.lineedit.setPalette(palette)
  45. valid_text = re.sub(r'[\\/:*?"<>|]', '', text)
  46. if valid_text != text:
  47. self.lineedit.setText(valid_text)
  48. else:
  49. QToolTip.hideText()
  50. palette = QPalette()
  51. palette.setColor(QPalette.Text, Qt.black)
  52. self.lineedit.setPalette(palette)
  53. if __name__ == '__main__':
  54. app = QApplication([])
  55. ex = Example()
  56. app.exec_()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/299748
推荐阅读
相关标签
  

闽ICP备14008679号