You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySide6中QLineEdit失去焦点后光标残留问题及占位文本功能调试求助

PySide6中QLineEdit失去焦点后光标残留问题及占位文本功能调试求助

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

Error Image

我重写了焦点事件来实现这个逻辑,代码如下:

# 创建带占位文本的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 18:24:49