打开一个窗口,关闭一个窗口在PyQt5
问题描述:
我想从一个欢迎屏幕的UI窗口中加载一个新的类,同时关闭欢迎屏幕。当我点击按钮去打开新窗口时,它会打开,但我只想关闭动作事件的第一个窗口。打开一个窗口,关闭一个窗口在PyQt5
我试过.hide()
,.terminate()
,.destroy()
,窗口仍然停留。
这是相关代码:
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
#self.email_blast_widget = EmailBlast()
#self.setCentralWidget(self.email_blast_widget)
self.welcome = OpeningWindow()
self.setCentralWidget(self.welcome)
bar = self.menuBar()
file_file = bar.addMenu('File')
file_edit = bar.addMenu('Edit')
def load_email(self):
self.mail = EmailBlast()
self.mail.show()
self.welcome = OpeningWindow()
self.destroy()
class OpeningWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.welcome = QtWidgets.QLabel("Welcome To Zach's \nEmail Blast Widget")
self.email_button = QtWidgets.QPushButton("Email")
self.csv_button = QtWidgets.QPushButton("CSVs")
self.exit_button = QtWidgets.QPushButton("Exit")
self.init_ui()
def init_ui(self):
# set layout to place widgets
self.email_button.clicked.connect(self.load_email)
self.csv_button.clicked.connect(self.load_csv)
#self.exit_button.clicked.connect(self.exit)
self.exit_button.clicked.connect(QtWidgets.qApp.quit)
class EmailBlast(QtWidgets.QWidget):
def __init__(self):
super().__init__()
# create widgets
答
self.exit_button.clicked.connect(QtWidgets.qApp.quit)
该解决方案适用于我的目的,但是,如果你想关闭一个窗口没有关闭,这将不使用的应用程序。使用self.close()
+0
有一件事是关闭窗口,另一件事是退出应用程序。 – eyllanesc
将'self.destroy()'更改为'self.close()' – eyllanesc
我试过了你的代码,它可以像你想的那样工作,当第二个销售被打开时,第一个销售被关闭。 – eyllanesc
@ eyllanesc谢谢,我编辑是因为我发现了这个问题。另外,为了让它退出,我可以回答我自己的问题。该函数是self.exit_button.clicked.connect(QtWidgets.qApp.quit) – EwokHugz