我有一個使用Qt Designer生成的GUI,我使用pyuic5生成.py文件。在一個單獨的py(program.py)文件中,我導入了我的UI,並在那裏完成了所有的工作。如何在PyQT5中自我隱藏並顯示QDialog()?
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()的每個組合,並且它們都沒有隱藏我的窗口。我得到那個說
錯誤「AttributeError的:‘MyGUI’對象有沒有屬性‘隱藏’」
這是有道理的,因爲MyGUI沒有隱藏()函數。我完全喪失瞭如何隱藏這個窗口。
編輯(解決) 對於未來的人,通過Hi Im Frogatto dialog.hide的建議()工作。
'dialog.hide()'怎麼樣? (順便說一句,'QDialog'不應該顯示你的主應用程序的UI,而是使用'QMainWindow') –
@ HiI'mFrogatto順便提一下是不好的建議。只有當你需要它的特殊功能時纔可以使用'QMainWindow':可停靠的子窗口等。*它是完全有效的*,它的主UI直接來自'QDialog'或'QWidget'。這是**不幸**,Qt Creator默認使用從「QMainWindow」派生的「主UI」來啓動您。在很多情況下,這是正確的做法。 –
@KubaOber我沒有說使用'QDialog'是一種無效的方法。但是UX需要應用程序的主UI具有菜單欄,狀態欄等,這些菜單欄由'QMainWindow'提供,而不是''QWidget''或'QDialog'。此外,'QDialog'應該被接受或拒絕,不會隱藏和顯示。 –