繁体   English   中英

如何从1 qt window跳转到pyqt5中的其他。?

[英]How to jump from 1 qt window to other in pyqt5.?

我正在开发pyqt5项目,我在其中login了 window 并registration了 window。我在login window 上有一个按钮,单击它应该会打开registration window。我已经在.py中设计了uiqt desginer文件和文件 have .ui使用pyuic

所以我有两个文件login_ui.pyregister_window_ui.py 为了使用它们,我还创建了两个单独的文件,即login.pyregister.py ,其中包含 ui 文件的所有功能代码。

下面是文件代码:

登录.py

import sys
import os
from PyQt5 import QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
from ui.login_ui import Ui_login_main_window
from ui.register_window_ui import Ui_register_window

curr_path = os.path.dirname(os.path.abspath(__file__))

class Login(QMainWindow, Ui_login_main_window):
    def __init__(self):
        QMainWindow.__init__(self)
        self.login_ui = Ui_login_main_window()
        self.login_ui.setupUi(self)

        self.login_ui.register_settings_btn.clicked.connect(self.show_registration_window)

    def show_registration_window(self):
        self.window = QtWidgets.QMainWindow()
        self.ui = Ui_register_window()
        self.ui.setupUi(self.window)
        self.window.show()

app = QApplication(sys.argv)
main_window = Login()
main_window.show()
sys.exit(app.exec_())

注册.py

import sys
import os
from PyQt5.QtWidgets import QApplication, QMainWindow
from ui.register_window_ui import Ui_register_window

curr_path = os.path.dirname(os.path.abspath(__file__))

class Register(QMainWindow, Ui_register_window):
    def __init__(self):
        QMainWindow.__init__(self)
        self.register_win_ui = Ui_register_window()
        self.register_win_ui.setupUi(self)

        self.register_win_ui.register_trial_btn.clicked.connect(self.print_data)

    def print_data(self):
        print("Clicked")

app = QApplication(sys.argv)
main_window = Register()
main_window.show()
sys.exit(app.exec_())

正如您在login.py中看到的那样,我为register_settings_btn创建了一个按钮单击事件,单击该事件时将显示Ui_register_window()register_window 因此,当我单击它时,它会显示 window,但 window 不起作用,即没有发生按钮单击事件。 对于register.py中的 ex,我创建了一个不起作用的按钮单击事件。

谁能解释一下为什么它不起作用。 请帮忙。 谢谢

我在登录 window 上有一个按钮,单击该按钮应打开注册 window

而不是创建 2 个 QApplications,只创建 1 个并显示或执行第一个登录,验证输入,如果一切正常,则显示注册

即改为做类似的事情:

app = QApplication(sys.argv)
login_window = Login()
result = login_window.exec()
if result == ???:
    register_window = Register()
    register_window.show()
else:
    showMsg('Login failed!') 

sys.exit(app.exec_())

更新。 创建另一个文件,即 myProject.py 并添加它!

#!/usr/local/bin/python
# coding: utf-8

import os, sys
add your imports here!


if __name__ == "__main__":
    app = QApplication(sys.argv)
    #create login view nd register view
    login_window = Login()
    register_window = Register()
    #execute the view login and read the doc, this will block the code until the user quit the view!
    result = login_window.exec()
    #define a condition to proof the validity of login process
    if result == ???:
        #show the register 
        register_window.show()
    else:
        #or show the error msg
        showMsg('Login failed!') 

    sys.exit(app.exec_())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM