使用python通过按钮将两个不同的小部件连接在一起

时间:2014-04-22 16:28:52

标签: python qt widget qt4 pyqt

我想知道如何将两个小部件连接在一起。我在QtDesigner上创建了两个小部件,一个是登录页面,另一个是主菜单。我想连接它们,以便当Login成功时,用户将被重定向到主窗口,Login小部件将自动关闭。有谁知道怎么做?

PS。我有主菜单的代码,并在单独的.py文件中登录

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

在QApp中首先创建一个包含登录窗口小部件的对话框并执行对话。根据结果​​,(如果登录失败)退出应用程序(或重新启动用户进行登录),或者(如果登录成功)实例化主窗口并显示它。

或者: 实例化并显示主窗口。立即显示与登录小部件的应用程序模式对话。根据结果​​,恢复操作或退出应用程序。

这是一些代码的片段,提示用户登录并针对数据库进行检查。登录对话在另一个文件中定义为DlgLogin。

#many imports
from theFileContainingTheLoginDialogue import DlgLogin

class MainWindow (QtGui.QMainWindow):
    def __init__ (self, parent = None):
        super (MainWindow, self).__init__ ()
        self.ui = Ui_MainWindow ()
        self.ui.setupUi (self)
        dlg = DlgLogin (self)
        if (dlg.exec_ () == DlgLogin.Accepted):
            #check here whether you accept or reject the credentials
            self.database = Database (*dlg.values)
            if not self.database.check (): sys.exit (0)
        else:
            sys.exit (0)
        self.mode = None

对话类如下(具有两个凭证的行编辑小部件):

from PyQt4 import QtGui
from dlgLoginUi import Ui_dlgLogin

class DlgLogin (QtGui.QDialog):
    def __init__ (self, parent = None):
        super (DlgLogin, self).__init__ ()
        self.ui = Ui_dlgLogin ()
        self.ui.setupUi (self)

    @property
    def values (self):
        return [self.ui.edtUser.text (), self.ui.edtPassword.text () ]

应用程序本身读取:

#! /usr/bin/python3.3

import sys
from PyQt4 import QtGui
from mainWindow import MainWindow

def main():
    app = QtGui.QApplication (sys.argv)
    m = MainWindow ()
    m.show ()
    sys.exit (app.exec_ () )

if __name__ == '__main__':
    main ()