我想知道如何将两个小部件连接在一起。我在QtDesigner上创建了两个小部件,一个是登录页面,另一个是主菜单。我想连接它们,以便当Login成功时,用户将被重定向到主窗口,Login小部件将自动关闭。有谁知道怎么做?
PS。我有主菜单的代码,并在单独的.py文件中登录
答案 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 ()