我有一个使用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()所建议的那样。
答案 0 :(得分:1)
在您的代码段中,dialog
的类型为QDialog
,因此具有hide
方法。但是MyGUI
类的实例似乎没有这样的方法。因此,如果您在dialog.hide()
函数中编写__init__()
,则可以隐藏它。