2017-08-16 178 views
0

我想從一個歡迎屏幕的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 
+0

將'self.destroy()'更改爲'self.close()' – eyllanesc

+0

我試過了你的代碼,它可以像你想的那樣工作,當第二個銷售被打開時,第一個銷售被關閉。 – eyllanesc

+0

@ eyllanesc謝謝,我編輯是因爲我發現了這個問題。另外,爲了讓它退出,我可以回答我自己的問題。該函數是self.exit_button.clicked.connect(QtWidgets.qApp.quit) – EwokHugz

回答

-1
self.exit_button.clicked.connect(QtWidgets.qApp.quit) 

該解決方案適用於我的目的,但是,如果你想關閉一個窗口沒有關閉,這將不使用的應用程序。使用self.close()

+0

有一件事是關閉窗口,另一件事是退出應用程序。 – eyllanesc

相關問題