2016-09-30 91 views
-2

這裏是打開,有一個按鈕,點擊它時,關閉登錄頁面,打開菜單頁面的登錄頁面的代碼open.py(主文件):PyQt4中:第二個窗口不顯示

from PyQt4 import QtGui 
import sys 
from loginpage import Ui_loginPage 
from menu import Ui_Menu 

class Form1(QtGui.QWidget, Ui_loginPage): 
    def __init__(self,parent=None): 
     QtGui.QWidget.__init__(self,parent) 
     self.setupUi(self) 
     self.login.clicked.connect(self.handleButton) 
     self.window2 = None 

    def handleButton(self): 
     self.close() 
     if self.window2 is None: 
      self.window2 = menu(self) 
     self.window2.show() 
     sys.exit(app.exec_()) 


class menu(QtGui.QWidget, Ui_Menu):  
    def __init__(self,parent=None): 
     QtGui.QWidget.__init__(self,parent) 
     self.setupUi(self) 

if __name__ == '__main__':  

    app = QtGui.QApplication(sys.argv) 
    window = Form1() 
    window.show() 
    sys.exit(app.exec_()) 

代碼運行良好,沒有任何錯誤,但是當我單擊登錄按鈕時,登錄頁面關閉,但菜單頁面不顯示。它根本不顯示。

+1

'菜單'不採取任何論據,爲什麼你通過'自我'? –

+0

我做了一些改變,並沒有通過自己的菜單.....仍然沒有運氣 –

回答

0

如果menu窗口是Form1窗口的子窗口,那麼當Form1窗口關閉時它將被隱藏 - 所以不要給它父項。你也應該不會再打電話sys.exit(app.exec_()),使你的代碼應該是這樣的:

class Form1(QtGui.QWidget, Ui_loginPage): 
    ... 

    def handleButton(self): 
     self.close() 
     if self.window2 is None: 
      self.window2 = menu() 
     self.window2.show() 

PS:請參閱this answer對於如何實現PyQt的登錄對話框一個更完整的例子。

+0

工作....感謝ekhumoro ....真的很感激它 –