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

PyQt5中lineedit-password-character样式属性失效问题求助

QLineEdit自定义密码掩码字符失效的解决办法

当你设置QLineEdit.Password回显模式后,用StyleSheet的lineedit-password-character属性自定义掩码字符没效果,是因为这个模式下Qt会优先使用系统原生的密码显示字符,StyleSheet的该属性仅在非原生风格或特定回显模式(如PasswordEchoOnEdit)下生效。

解决这个问题最直接可靠的方式是使用QLineEdit.setPasswordCharacter()方法,直接指定你想要的掩码字符:

修改后的代码示例

# Password field
password_field = QtWidgets.QLineEdit(window)
password_field.resize(input_window.width() - password_label.width() - input_field_offset - input_window_padding * 2, password_label.height())
password_field.move(password_label.x() + password_label.width() + input_field_offset, password_label.y())
password_field.setEchoMode(QtWidgets.QLineEdit.Password)
# 直接设置掩码字符为*
password_field.setPasswordCharacter('*')
password_field.setStyleSheet("color: #88c0d0; border: 0; selection-background-color: #88c0d0; selection-color: #2e3440;")

可选:通过StyleSheet生效的前提

如果你坚持要用StyleSheet实现,需要切换Qt应用到非原生风格(比如Fusion),这样lineedit-password-character属性才能生效。在应用初始化时添加:

app = QtWidgets.QApplication(sys.argv)
app.setStyle('Fusion')

然后保留StyleSheet中的lineedit-password-character: 42;(42是*的ASCII码)即可。不过这种方式依赖于Qt风格,兼容性不如直接调用方法稳定。

内容的提问来源于stack exchange,提问作者Assaad El Oualji

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:31:02