更改对话框的CancelButtonText

2024-05-29 09:37:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想覆盖/更改用于密码输入的对话框的“取消”按钮的文本。 我尝试了以下方法,但是新文本在getText期间没有显示。日志显示新文本保存在内部

有人知道我做错了什么吗

提前谢谢

caption_cancel = 'Cancel and go to previous mode'

input_password_dialog = QtWidgets.QInputDialog(self)
input_password_dialog.setInputMode(QtWidgets.QInputDialog.TextInput)
input_password_dialog.setOption(QtWidgets.QInputDialog.UsePlainTextEditForTextInput)

logging.debug('cancelButtonText = ' + input_password_dialog.cancelButtonText())  # 'Cancel'

input_password_dialog.setCancelButtonText(caption_cancel)

logging.debug('cancelButtonText = ' + input_password_dialog.cancelButtonText())  # 'Cancel and go to previous mode'

password, ok = input_password_dialog.getText(self, 'Authentification', 'Password',
                                             echo=QtWidgets.QLineEdit.Password)  # just shows 'Cancel"

Tags: andto文本goinputpasswordcanceldialog
1条回答
网友
1楼 · 发布于 2024-05-29 09:37:50

您有两个错误:

  • QInputDialog::getText()是一个静态方法,因此它不会使用input_password_dialog对象,因此您必须直接将诸如标题、标签等属性设置为input_password_dialog对象,或者尝试应用hack来获得在静态方法中创建的QInputDialog

  • 如果设置了QInputDialog.TextInputQInputDialog.UsePlainTextEditForTextInput,则不会显示点,而是显示文本作为密码条目

考虑到上述情况,解决方案是:

caption_cancel = "Cancel and go to previous mode"

input_password_dialog = QtWidgets.QInputDialog(self)
# input_password_dialog.setInputMode(QtWidgets.QInputDialog.TextInput)
# input_password_dialog.setOption(QtWidgets.QInputDialog.UsePlainTextEditForTextInput)
input_password_dialog.setCancelButtonText(caption_cancel)
input_password_dialog.setWindowTitle("Authentification")
input_password_dialog.setLabelText("Password")
input_password_dialog.setTextEchoMode(QtWidgets.QLineEdit.Password)

if input_password_dialog.exec_() == QtWidgets.QDialog.Accepted:
    password = input_password_dialog.textValue()
    print(password)

相关问题 更多 >

    热门问题