pyqt5实现登录界面跳转
时间: 2023-10-07 14:09:39 浏览: 67
要实现登录界面跳转,你需要使用 `QStackedWidget` 控件。这个控件允许你将多个窗口部件(widget)叠加在一起,只有当前窗口部件可见。当你需要切换窗口部件时,只需要将当前窗口部件隐藏,然后显示下一个窗口部件即可。
以下是一个简单的例子,它包括一个登录界面和一个主界面。当用户在登录界面中输入正确的用户名和密码后,程序会切换到主界面。
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, QStackedWidget
class LoginWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
# 创建输入框和按钮
self.username_edit = QLineEdit()
self.password_edit = QLineEdit()
self.password_edit.setEchoMode(QLineEdit.Password)
self.login_button = QPushButton("登录")
# 创建布局
vbox = QVBoxLayout()
vbox.addWidget(QLabel("用户名:"))
vbox.addWidget(self.username_edit)
vbox.addWidget(QLabel("密码:"))
vbox.addWidget(self.password_edit)
vbox.addWidget(self.login_button)
self.setLayout(vbox)
class MainWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
# 创建标签和按钮
self.welcome_label = QLabel("欢迎使用")
self.logout_button = QPushButton("退出")
# 创建布局
vbox = QVBoxLayout()
vbox.addWidget(self.welcome_label)
vbox.addWidget(self.logout_button)
self.setLayout(vbox)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
# 创建登录界面和主界面
self.login_widget = LoginWidget()
self.main_widget = MainWidget()
# 创建StackedWidget并添加两个界面
self.stacked_widget = QStackedWidget()
self.stacked_widget.addWidget(self.login_widget)
self.stacked_widget.addWidget(self.main_widget)
# 切换到登录界面
self.stacked_widget.setCurrentWidget(self.login_widget)
# 连接按钮的槽函数
self.login_widget.login_button.clicked.connect(self.handle_login)
self.main_widget.logout_button.clicked.connect(self.handle_logout)
# 创建布局
hbox = QHBoxLayout()
hbox.addWidget(self.stacked_widget)
self.setLayout(hbox)
def handle_login(self):
# 验证用户名和密码,如果正确切换到主界面
if self.login_widget.username_edit.text() == "admin" and self.login_widget.password_edit.text() == "123456":
self.stacked_widget.setCurrentWidget(self.main_widget)
def handle_logout(self):
# 切换回登录界面
self.stacked_widget.setCurrentWidget(self.login_widget)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们首先创建了两个窗口部件 `LoginWidget` 和 `MainWidget`,它们分别对应登录界面和主界面。然后我们创建了一个 `QStackedWidget`,并将这两个窗口部件添加到其中。在 `MainWindow` 的初始化函数中,我们设置了当前显示的窗口部件为登录界面,并将登录按钮和退出按钮的槽函数连接到 `handle_login` 和 `handle_logout` 函数中。在 `handle_login` 函数中,如果用户名和密码正确,我们就切换到主界面。在 `handle_logout` 函数中,我们则切换回登录界面。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)