如果要将数据添加到数据库中,我正在使用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)
但是它没有按预期工作。另外,当用户单击“否”时,我也会遇到问题。程序崩溃,而不是返回主窗口。
最佳答案
根据the docs on QMessageBox::question,返回值是单击的按钮。使用静态方法QMessageBox::question
限制了自定义QMessageBox
的方式。而是显式创建QMessageBox
的实例,根据需要调用setText
,setInformativeText
和setDetailedText
。请注意,您的参数也与setDetailedText
所需的参数不匹配。这些文档是here。我认为您的代码应如下所示。
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
关于python - 如何在pyqt MessageBox中使用变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50541913/