Как использовать переменную в pyqt MessageBox - PullRequest
0 голосов
/ 26 мая 2018

Я использую MessageBox, чтобы получить пользовательский ввод, если данные должны быть добавлены в базу данных, но я не знаю, как разместить мои переменные внутри фактического сообщения.Функция MessageBox выглядит следующим образом:

def message(self, par_1, par_2):
    odp = QMessageBox.question(self, 'Information', "No entry. Would you like to add it to DB?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
    if odp == QMessageBox.Yes:
        return True
    else:
        return False

Функция вызывается так:

self.message(autor_firstname, autor_lastname)

Я пытался добавить:

odp.setDetailText(par_1, par_2)

Но это не сработало какожидается.Кроме того, у меня проблема, когда пользователь нажимает «Нет».Сбой программы вместо возврата в главное окно.

1 Ответ

0 голосов
/ 26 мая 2018

В соответствии с документами по QMessageBox :: question , возвращаемое значение - это кнопка, по которой была нажата.Использование статического метода QMessageBox::question ограничивает возможности настройки QMessageBox.Вместо этого создайте экземпляр QMessageBox в явном виде, при необходимости вызовите setText, setInformativeText и setDetailedText.Обратите внимание, что ваши аргументы также не соответствуют тому, что необходимо для setDetailedText.Эти документы здесь .Я думаю, что ваш код должен выглядеть примерно так.

def message(self, par_1, par_2):

    # Create the dialog without running it yet
    msgBox = QMessageBox()

    # Set the various texts
    msgBox.setWindowTitle("Information")
    msgBox.setText("No entry. Would you like to add it to the database")
    detail = "%s\n%s" % (par_1, par_2) # formats the string with one par_ per line.
    msgBox.setDetailedText(detail) 

    # Add buttons and set default
    msgBox.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
    msgBox.setDefaultButton(QMessageBox.No)     

    # Run the dialog, and check results   
    bttn = msgBox.exec_()
    if bttn == QMessageBox.Yes:
        return True
    else:
        return False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...