2017-05-04 52 views
0

我希望我有一個簡單的問題在這裏。我用QT Designer和MDI區域的子窗口創建了一個非常大的GUI。我已經使用pyuic5將其從.ui文件轉換爲.py文件。我已經寫了一個函數來打開子窗口時按下按鈕。第一次按下按鈕時,它工作正常。我遇到的問題是第二次按下按鈕時,它只是在MDI區域內顯示一個空白子窗口。如何在每次按下按鈕時正確顯示它。我將附上我如何啓動下面的子窗口的代碼。任何建議將非常感激。感謝您的時間和你的幫助圖形用戶界面MDI子窗口只顯示在第一個按鈕按

Code按鈕被點擊

def windowaction(self): 

    sub = QtWidgets.QMdiSubWindow() 
    sub.setWidget(self.Load_Input) 
    sub.setObjectName("Load_Input_window") 
    sub.setWindowTitle("Load Input") 
    self.mdiArea.addSubWindow(sub) 
    sub.show() 

第一次,當點擊該按鈕 First Time Clicking the button

第二次點擊按鈕 被稱爲Second Time Clicking the button

回答

0

由於將相同的窗口小部件對象添加到不同的QMdiSubWindow,您必須創建一個新對象並將其添加到新的QMdiSubWindow

def windowaction(self): 
    sub = QtWidgets.QMdiSubWindow() 
    Load_Input = LoadInput() 
    sub.setWidget(Load_Input) 
    sub.setObjectName("Load_Input_window") 
    sub.setWindowTitle("Load Input") 
    self.mdiArea.addSubWindow(sub) 
    sub.show() 
+0

謝謝你的迴應。當我嘗試獲取代碼時,出現「TypeError:'QWidget'對象不可調用的錯誤」'。我注意到唯一的區別是你有'Load_Input = LoadInput()',我有'Load_Input = LoadInput'的等價物。 '()'做了什麼區別?另外,由於我正在創建一個新對象,在創建一個新對象之前刪除舊對象會很好嗎?最後,我只希望其中一個「加載輸入」窗口一次打開。 – laxer

+0

在你的代碼中,你應該做一些類似於self.Load_Input =的東西,你可以通過github,dropbox或類似的代碼向我展示那行代碼或共享你的項目。 – eyllanesc

+0

我剛做了一個github存儲庫,可以在這裏找到。此外,該函數在'Main.py'文件中。我試圖保持它分開https://github.com/simplesports/WorkHelper – laxer

相關問題