pyqt登录界面跳转及传值给主界面

这篇博客介绍了如何在PyQT中实现登录界面到主界面的跳转,并在跳转过程中传递用户名。作者首先讨论了不同类型的窗口数据传递方式,包括父子窗口传递、主函数实例化和通过参数传递。由于前两种方式存在局限,作者选择了第三种方式,并通过信号槽机制在登录成功后发送用户信息,关闭登录窗口并显示主窗口。在主窗口中,接收信号并更新欢迎语句,从而实现信息传递。
摘要由CSDN通过智能技术生成

pyqt登录界面跳转及传值给主界面

开头

最近要做一个应用,其中一个模块要管理表格数据,设置登录界面。目的是实现登录界面验证身份,而后登录主窗口,将登录用户名传递给主窗口。本来也可以通过登录窗口对数据库操作,跳转主窗口后再次读取数据库实现。但是简单的用户名信息还要重新读取数据库太过老土,不符合本人气质。在网上查了很多,并不理想。最后通过窗口通信实现了登录跳转,现记录如下供参考:

创建界面

创建登录界面,和登录后显示用户名欢迎界面,我为了便于测试,登录界面没有连接数据库,用两个局部变量先测试功能,用户名和密码都是1,这样测试时候输入可以快一点
图1
图2
登录成功之后显示欢迎界面,同时也是密码修改功能,这和本文无关。

技术分析

有以下几种容易实现的功能
1.父子数据传递,即两个窗口写两个类,两个实例之间传递,这种的特点是两个类实例化是子窗口嵌套在父窗口,如果父窗口消灭,子窗口也会消失,不符合登录跳转的功能;
2.在主函数(就是一般放在类末尾用于测试运行的函数,应用完成之后通过此部分完成程

您可以使用QStackedWidget来实现登录界面界面之间的跳转。具体步骤如下: 1. 在Qt Designer中创建两个窗口,一个是登录界面,一个是界面。 2. 在登录界面中添加一个按钮,当用户点击该按钮时,跳转界面。 3. 在界面中添加一个按钮,当用户点击该按钮时,返回登录界面。 4. 在函数中初始化两个窗口,并使用QStackedWidget将它们添加到堆栈中。 5. 在登录界面中的按钮槽函数中,使用堆栈的setCurrentIndex()函数将堆栈切换到界面。 6. 在界面中的按钮槽函数中,使用堆栈的setCurrentIndex()函数将堆栈切换回登录界面。 以下是一个简单的示例代码: ``` python from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QStackedWidget class LoginWidget(QWidget): def __init__(self): super().__init__() self.login_button = QPushButton("Login") self.login_button.clicked.connect(self.switch_to_main) layout = QVBoxLayout() layout.addWidget(self.login_button) self.setLayout(layout) def switch_to_main(self): stacked_widget.setCurrentIndex(1) class MainWidget(QWidget): def __init__(self): super().__init__() self.back_button = QPushButton("Back") self.back_button.clicked.connect(self.switch_to_login) layout = QVBoxLayout() layout.addWidget(self.back_button) self.setLayout(layout) def switch_to_login(self): stacked_widget.setCurrentIndex(0) if __name__ == '__main__': app = QApplication([]) stacked_widget = QStackedWidget() login_widget = LoginWidget() main_widget = MainWidget() stacked_widget.addWidget(login_widget) stacked_widget.addWidget(main_widget) stacked_widget.show() app.exec_() ``` 在这个示例中,我们创建了两个QWidget窗口:LoginWidget和MainWidget。在LoginWidget中,我们添加了一个QPushButton,当用户点击该按钮时,切换到MainWidget。在MainWidget中,我们添加了一个QPushButton,当用户点击该按钮时,切换回LoginWidget。我们使用QVBoxLayout将按钮添加到QWidget中。 在函数中,我们创建了一个QStackedWidget,并将LoginWidget和MainWidget添加到堆栈中。我们使用setCurrentIndex()函数初始化堆栈并显示它。当用户点击按钮时,我们使用setCurrentIndex()函数切换窗口。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值