Conectando dos widgets diferentes juntos en qt con python a través de un botón

Me preguntaba cómo conectar dos widgets juntos. Tengo dos widgets que creé en QtDesigner, uno es una página de inicio de sesión y otro es un menú principal. Quiero conectarlos para que cuando el inicio de sesión sea exitoso, el usuario sea redirigido a la ventana principal, y el widget de inicio de sesión se cerrará automáticamente. ¿Alguien sabe como hacer esto?

PD. Tengo el código para el menú principal e inicio de sesión en archivos .py separados

Podrías hacer lo siguiente:

En su QApp, cree primero un diálogo que contenga el widget de inicio de sesión y ejecute el diálogo. Dependiendo del resultado, ya sea (si se produjo un error en el inicio de sesión) salga de la aplicación (o vuelva a solicitar al usuario que inicie sesión), o (si el inicio de sesión tuvo éxito) cree una instancia de la ventana principal y muéstrela.

O bien: crear una instancia y mostrar la ventana principal. Inmediatamente muestre un diálogo modal de aplicación con el widget de inicio de sesión. Dependiendo del resultado, reanude la operación o salga de la aplicación.

Aquí hay un fragmento de código, que solicita al usuario que inicie sesión y lo compara con una base de datos. El diálogo de inicio de sesión se define como DlgLogin en otro archivo.

#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 

La clase de diálogo es la siguiente (con dos widgets de edición de líneas para las credenciales):

 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 () ] 

La aplicación en sí lee:

 #! /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 ()