Python 如何关闭QDialog
我一直试图关闭一个从主窗口分支出来的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
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):