gpt4 book ai didi

python - PyQt QDialog 返回响应是或否

转载 作者:行者123 更新时间:2023-11-28 22:36:27 31 4
gpt4 key购买 nike

我有一个QDialog类

confirmation_dialog = uic.loadUiType("ui\\confirmation_dialog.ui")[0]

class ConfirmationDialog(QDialog,confirmation_dialog):

def __init__(self,parent=None):
QDialog.__init__(self,parent)
self.setupUi(self)
message = "Hello, Dialog test"
self.yes_button.clicked.connect(self.yes_clicked)
self.no_button.clicked.connect(self.no_clicked)
self.message_box.insertPlainText(message)

def yes_clicked(self):
self.emit(SIGNAL("dialog_response"),"yes")

def no_clicked(self):
self.emit(SIGNAL("dialog_response"),"no")

我有一个函数需要确认是否继续,但在当前的实现中它不会等待 QDialog 关闭。

如何让我的函数等待 QDialog 的响应,然后进行相应的处理。

我想实现类似于 confirm 功能的东西,如下所示

def function(self):
....
....
if self.confirm() == 'yes':
#do something
elif self.confirm() == 'no':
#do something

def confirm(self):
dialog = ConfirmationDialog()
dialog.show()
return #response from dialog

最佳答案

您可以使用 dialog.exec_(),它将以模态、阻塞模式打开对话框并返回一个整数,指示对话框是否被接受。通常,您可能只想在对话框内调用 self.accept()self.reject() 来关闭它,而不是发出信号。

dialog = ConfirmationDialog()
result = dialog.exec_()
if result: # accepted
return 'accepted'

如果我使用对话框从用户那里获取一组特定的值,我通常会将其包装在 staticmethod 中,这样我就可以调用它并在其中获取值我的应用程序的控制流,就像一个正常的功能。

class MyDialog(...)

def getValues(self):
return (self.textedit.text(), self.combobox.currentText())

@staticmethod
def launch(parent):
dlg = MyDialog(parent)
r = dlg.exec_()
if r:
return dlg.getValues()
return None

values = MyDialog.launch(None)

然而,在几乎所有情况下,我只需要向用户显示一条消息,或者让他们通过单击按钮做出选择,或者我需要他们输入一小段数据,我都可以使用内置的-in 普通对话框类的静态方法 -- QMessageBox , QInputDialog

关于python - PyQt QDialog 返回响应是或否,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37411750/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com