如何禁用PyQt5中QDateEdit的文本高亮并防止误编辑
解决QDateEdit文本聚焦/高亮及误编辑问题
要彻底解决QDateEdit运行时文本聚焦高亮、避免误编辑的问题,你可以通过以下两种方式优化代码:
方法一:直接禁用部件焦点获取能力
从根源上阻止QDateEdit获得焦点,彻底避免文本高亮:
from PyQt5.QtCore import Qt # 初始化QDateEdit self.date = QDateEdit(calendarPopup=True) # 禁止部件获取任何焦点 self.date.setFocusPolicy(Qt.NoFocus) # 设置LineEdit只读,双重保障无法编辑 self.date.lineEdit().setReadOnly(True)
方法二:清除LineEdit的文本选中状态
如果需要保留部件焦点但不想文本被高亮,可以在初始化后主动取消选中:
self.date = QDateEdit(calendarPopup=True) self.date.lineEdit().setReadOnly(True) # 清除LineEdit的文本选中状态 self.date.lineEdit().deselect()
补充说明
setFocusPolicy(Qt.NoFocus)会让部件完全无法通过鼠标、键盘获取焦点,同时也能阻止键盘方向键修改日期的操作- 搭配
lineEdit().setReadOnly(True)可以形成双重防护,即使焦点意外被获取,也无法编辑日期内容
内容的提问来源于stack exchange,提问作者Jansen Lloyd Macabangun
相关产品推荐
相关产品推荐

