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
相关产品推荐
相关产品推荐

