Python 如何关闭QDialog

Python 如何关闭QDialog,python,qt,user-interface,pyqt,qdialog,Python,Qt,User Interface,Pyqt,Qdialog,我一直试图关闭一个从主窗口分支出来的QDialog窗口。到目前为止,以下各项对我不起作用: self.close() QDialog.close() 我尝试了其他命令,如exit和exec\ux(),但没有成功。 我最常见的错误是 [className]对象没有属性“close” 上面是我的主窗口 class Ui_Dialog(object): def setupUi(self, Dialog): [GUI CODE] def retranslateUi

我一直试图关闭一个从主窗口分支出来的QDialog窗口。到目前为止,以下各项对我不起作用:

self.close()
QDialog.close()
我尝试了其他命令,如
exit
exec\ux()
,但没有成功。 我最常见的错误是

[className]对象没有属性“close”

上面是我的主窗口

class Ui_Dialog(object):

    def setupUi(self, Dialog):

        [GUI CODE]

    def retranslateUi(self, Dialog):

        [MORE GUI CODE]

    def button_click(self, arg1):

        self.close()

第二个块是对话框窗口代码。我如何关闭这个对话框窗口?

首先,抱歉有关C++的链接,但是.< 您可以尝试使用或函数关闭对话框。通过这样做,您可以适当地设置返回值(
拒绝
接受
或指定为参数的值)


总之,您应该尝试调用
YourDialog.done(n)
关闭对话框,并返回
n
YourDialog.accept()
YourDialog.reject()
,当您希望它被接受/拒绝时。

因为
QDialog
QWidget
,而
QWidget
close()方法,我不明白它怎么会不起作用。但是,您不应该调用
popup.exec()
,因为在您没有意识到的情况下,它会很高兴地要求您的许多代码是可重入的。这是不必要的-当执行
cap\u on\u Click
时,应用程序事件循环已经在运行,并且在调用堆栈上


popup.show()
之后,对话框将可见并可用,直到用户接受或拒绝该对话框。希望您的对话框设计将按钮框的
accepted()
rejected()
信号连接到对话框的
accept()
rejected()
插槽。这是Qt Creator和Qt Designer提供的
QDialog
模板的默认行为,但在查看Ui文件时,您应该进入信号/插槽编辑器模式进行检查。

我猜问题在于
Ui\u对话框
没有继承
QDialog
,因此
拒绝()
接受()
done()
没有定义。我想

class Ui_Dialog(object):
应改为

class Ui_Dialog(QDialog):

但是我不能测试它,因为没有提供最小的工作示例。请考虑下面的例子。请考虑发布一个最小的工作示例,这样我们就可以调试它。我已经尝试过类似的方法,但是由于某种原因,我的对话框没有被定义。@ CSNYDER,它没有定义在哪里?在UIL对话类中,这是我尝试调用Self.Cro的地方。se()函数。@CSnyder,你试过调用

self.done()
或类似的东西吗?@CSnyder:你应该如何调用
close()
Ui\u对话框上
如果它继承自
对象
?使用Qt Designer生成的代码应保持不变。您要做的是使用多重继承,并使对话框同时继承自
QDialog
和(不受限制)
Ui\u对话框
。然后您可以访问生成的内容和随
QDialog附带的内容
是的,我也不明白怎么做。不过,我可以通过省略popup.exec_uu()告诉您这一点,我的对话框窗口根本没有出现。@csn那么,如果其他东西坏了,您的代码看起来很好。我做对了。但在我的情况下,使用dialog.close()或dialog.done()仍然无法工作。窗口仍然打开。请提供最小的、可重复的示例。
class Ui_Dialog(QDialog):