2016-06-07 42 views
0

我正在寫一個程序,我已經做了以下。python pyqt多個類

  1. 使用對話框
  2. 如果成功啓動其他應用程序,如果再次失敗提示憑據獲取用戶憑據。 我實現這個用兩個類叫做x_LoginForm和x_Application 的代碼如下 類x_LoginForm(QDialog的) 元素類
  3. QLineEdit的獲得用戶名
  4. QLineEdit的獲取口令
  5. QPushbutton以取消
  6. QPushbutton到登錄

如果登錄成功,我會標誌main_window_flag設置爲1個 類x_Application()

該課程將啓動一個新的應用程序並向用戶提供控制。如果標誌main_window_flag在類x_LoginForm 當我已經驗證我想通過控制返回主,並實例化x_Application的對象設置爲1

main_window_flag=0 
if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    form = x_LoginForm() 
    form.show() 
    if main_window_flag == 1: 
     window = x_Application() 
     window.show() 
sys.exit(app.exec_()) 

這個類的對象將被實例化類。 退出類x_LoginForm,如果我發出self.close - 整個程序關閉。

+0

我在想你問的是爲什麼'if'塊中的代碼不被執行? –

+0

是的。我在問如何獲得if塊中的代碼來執行。 –

回答

0

正在發生的事情是,form.show()立即返回,和你的程序將if檢查那麼這很可能計算到False,因爲你有main_window_flag=0如果你改變form.show()form.exec_()它會等到窗體關閉,然後用代碼進行。請閱讀更多關於modal dialogs的信息。

+0

謝謝busfault。 form.exec_()部分解決了我的問題。 現在if塊被執行,主應用程序啓動。它始於此 的QWidget ::重繪示數:遞歸重繪檢測 的QPixmap:這是不是安全使用像素圖的GUI線程之外 的QWidget ::重繪:遞歸重繪檢測 讓我解釋一下情景更好, 有一個現有的應用程序,它是用python和pyqt編寫的,並且工作正常 我正在編寫一個封裝應用程序來獲取用戶credentails,如果它們正確,然後啓動主應用程序。 –

+0

是'x_Application'' QApplication'嗎? –

+0

是的,這是一個QApplication –