Изменить CancelButtonText из QInputDialog - PullRequest
1 голос
/ 13 марта 2020

Я хочу перезаписать / изменить текст кнопки «Отмена» QInputDialog, которую я использую для ввода пароля. Я попробовал следующее, но новый текст не отображается во время 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"

1 Ответ

2 голосов
/ 13 марта 2020

У вас есть 2 ошибки:

  • QInputDialog::getText() - это метод stati c, поэтому он не будет использовать объект input_password_dialog, поэтому вы должны непосредственно установить такие свойства, как название, метка и т. д. c. к объекту input_password_dialog или попробуйте применить хак для получения QInputDialog, созданного в методе stati c.

  • Если вы установите QInputDialog.TextInput и QInputDialog.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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...