PySide6中QLineEdit失去焦点后光标残留问题及占位文本功能调试求助
PySide6中QLineEdit失去焦点后光标残留问题及占位文本功能调试求助
各位好!我在开发PySide6应用窗口时,给一个QLineEdit文本框做了占位文本功能:希望文本框获得焦点时清空默认的占位文字,失去焦点且内容为空时恢复占位文字。但现在遇到个诡异的问题——当文本框失去焦点后,光标居然还残留着,就像下图这样:

我重写了焦点事件来实现这个逻辑,代码如下:
# 创建带占位文本的textbox01 self.textbox01 = QLineEdit(self) self.textbox01.setText("Enter Full Name") # 占位文本 self.textbox01.setFixedSize(250, 30) # 设置文本框固定尺寸 self.textbox01.setStyleSheet(""" QLineEdit { background-color: transparent; color: #D9D9D9; /* 前景色 */ border: 1px solid #D9D9D9; /* 边框颜色 */ font: 12pt "Calibri"; /* 字体及大小 */ } """) self.textbox01.setAlignment(Qt.AlignmentFlag.AlignCenter) self.textbox01.move((self.window_width - self.textbox01.width()) // 2, self.profile_image.y() + self.profile_image.height() + 30) # 绑定焦点事件 self.textbox01.focusInEvent = self.clear_text01_on_focus self.textbox01.focusOutEvent = self.restore_text01_on_focus_out def clear_text01_on_focus(self, event): # 文本框获得焦点时清空占位文本 if self.textbox01.text() == "Enter Full Name": self.textbox01.clear() def restore_text01_on_focus_out(self, event): # 文本框失去焦点且为空时恢复占位文本 if self.textbox01.text() == "": self.textbox01.setText("Enter Full Name") self.textbox01.clearFocus()
试过调整clearFocus()的位置,但光标残留的问题还是没解决,有没有大佬能帮我排查下问题所在?
备注:内容来源于stack exchange,提问作者Athang Tikekar
相关产品推荐
相关产品推荐

