如何自我隐藏并在PyQT5中显示QDialog()?

时间:2016-08-30 13:36:21

标签: python qt python-3.x pyqt5

我有一个使用Qt Designer生成的GUI,我使用pyuic5生成.py文件。在一个单独的py(program.py)文件中,我导入我的UI,在那里做我所有的工作。

program.py

import sys, os, time
from subprocess import call
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyCred_GUI import Ui_Dialog


class MyGUI(Ui_Dialog):
    def __init__(self, dialog):
        Ui_Dialog.__init__(self)
        self.setupUi(dialog)


        self.pushButton_2.clicked.connect(self.cancelbutton)

    def cancelbutton(self):
        exit()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    dialog = QtWidgets.QDialog()
    dialog.setWindowFlags(QtCore.Qt.WindowSystemMenuHint)
    prog = MyGUI(dialog)

    dialog.show()
    sys.exit(app.exec_())

为了集中讨论这个问题,我提出了很多意见。当我单击“取消”按钮时,我希望窗口隐藏,设置计时器,然后在这么多秒后重新出现。我已经尝试过self.close()self.hide()self.destroy()的每个组合,但没有一个隐藏我的窗口。我收到一条错误

属性错误:'MyGUI'对象没有属性'隐藏'

这是有道理的,因为MyGUI没有hide()函数。我完全失去了如何隐藏这个窗口。

编辑(已解决) 对于未来的人,正如Hi Im Frogatto dialog.hide()所建议的那样。

1 个答案:

答案 0 :(得分:1)

在您的代码段中,dialog的类型为QDialog,因此具有hide方法。但是MyGUI类的实例似乎没有这样的方法。因此,如果您在dialog.hide()函数中编写__init__(),则可以隐藏它。