J'ai un problème en essayant de développer une interface graphique avec PyQt5 et QT designer.Comment créer une fenêtre qui ouvre une autre fenêtre avec le module uic ?? Qt-Designer et Python
Je veux utiliser le module uic
, j'ai un fichier .ui
appelé , et un autre login.ui
, comme je peux appeler de login.ui
au registry.ui
, en cliquant sur buttom registro
J'ai aussi le Login.py
, Registro.py
fichiers respectivement
Mon intention est de cliquer sur le bouton d'enregistrement, et ouvrez la fenêtre d'enregistrement
en utilisant seulement la uic.loadUI()
méthode?
Ici, je montre mon code
Classe Connexion login.py
import sys
import time
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget
from PyQt5 import uic
import Con_pos
from Registro import Registro
class Login(QWidget):
def __init__(self):
QWidget.__init__(self)
uic.loadUi("Login.ui", self)
self.registro.clicked.connect(self.view_Registro)
self.ingresar.clicked.connect(self.autenticar)
def autenticar(self):
pid = self.getPID()
con = Con_pos.con_pos()
user = self.in_login.text()
password = self.in_pass.text()
print(password)
fecha = time.strftime("%X") + " " + time.strftime("%x")
if user != "" and password != "":
consulta = ''' SELECT "id_user" FROM "User" WHERE "id_user" = '%s' ; ''' %(user)
c_user = con.consulta(consulta)
print(c_user)
consulta = ''' SELECT "pass" FROM "User" WHERE "id_user" = '%s' ;''' %(user)
c_pass = con.consulta(consulta)
if c_user != None:
c_pass = c_pass[0]
print("test")
print(c_pass)
if c_pass == password:
consulta = ''' INSERT INTO "sesion" VALUES ('%s', '%s', '%s'); '''%(fecha ,pid, user)
con.insertar(consulta)
def getPID(self):
con = Con_pos.con_pos()
func = "pg_backend_pid"
pid = con.call_proc(func)
pid = pid[0][0]
return pid
def view_Registro(self):
reg = Registro.Registro()
reg.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
login = Login()
login.show()
sys.exit(app.exec())
classe Registro: Registro.py
import sys
import time
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import uic
import Con_pos
import error_log as error
class Registro(QMainWindow):
con = Con_pos.con_pos()
def __init__(self):
QMainWindow.__init__(self)
uic.loadUi("Registro.ui", self)
self.btn_reg.clicked.connect(self.validar_nombre)
def validar_nombre(self):
fecha = time.strftime("%X") + " " + time.strftime("%x")
usuario = self.user_tx_input.text()
password = self.pass_tx_input.text()
if usuario != "":
pid = self.getPID()
consul = '''SELECT "id_user" FROM "User" WHERE "id_user" = '%s'; ''' % (usuario)
res_con = Registro.con.consulta(consul)
if not res_con:
ins_user = '''INSERT INTO "User" VALUES ('%s', '%s') ''' % (usuario, password)
ins_sesion = ''' INSERT INTO "sesion" VALUES ('%s', %s,'%s') ''' % (fecha, pid, usuario)
Registro.con.insertar(ins_user)
Registro.con.insertar(ins_sesion)
else:
err = error.error_dia()
err.etiqueta.setText("El usuario %s ya esta en uso" % (usuario))
err.exec()
def getPID(self):
func = "pg_backend_pid"
pid = Registro.con.call_proc(func)
pid = pid[0][0]
return pid
if __name__ == "__main__":
app = QApplication(sys.argv)
ventana = Registro()
ventana.show()
sys.exit(app.exec())
Lorsque vous appelez la fenêtre d'enregistrement, ce qui arrive à la fenêtre de connexion est maintenue ouverte ou fermée? – eyllanesc
Le problème est que je ne peux pas appeler la fenêtre "Registro", j'obtiens une erreur, et tout ferme, mais mon but est d'ouvrir la fenêtre "Registro" par le login – Andres
J'ai proposé une solution, essayez – eyllanesc