2016-06-07 78 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 –