如何使用uic模块创建一个打开另一个窗口的窗口? Qt-Designer和Python

时间:2017-04-20 14:55:08

标签: python qt qt-designer uic

尝试使用PyQt5和QT设计器开发GUI时遇到问题。

我想使用uic模块,我有一个名为.ui的{​​{1}}文件和另一个registro.ui,我可以从login.ui拨打login.ui,点击按钮registry.ui

我还分别有registroLogin.py个文件

我的目的是点击注册按钮,然后打开注册窗口

仅使用Registro.py方法?

这里我展示了我的代码

课程登录 uic.loadUI()

login.py

Class Registro: 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())

Registro.py

1 个答案:

答案 0 :(得分:0)

您必须将参数传递给新窗口,您可以通过两种方式执行此操作:

  1. 第一个解决方案:使变量reg成为类的一个属性:
  2. def view_Registro(self):
        self.reg = Registro()
        self.reg.show()
    
    1. 第二个解决方案:作为参数传递给同一个实例:
    2. def view_Registro(self):
          reg = Registro(self)
          reg.show()
      

      对于此解决方案,您必须更改:

      class Registro(QMainWindow):
          con = Con_pos.con_pos()
          def __init__(self):
              QMainWindow.__init__(self)
      

      class Registro(QMainWindow):
          con = Con_pos.con_pos()
          def __init__(self, parent=None):
              QMainWindow.__init__(self, parent=parent)
      
相关问题