pyqt5登录界面跳转
时间: 2023-11-03 16:05:03 浏览: 46
要实现PyQt5登录界面跳转,可以使用QStackedWidget控件。该控件可以将多个界面放在一个堆栈中,只显示当前处于堆栈顶部的界面。
以下是一个简单的示例代码,其中包含两个界面:登录界面和主界面。当用户在登录界面输入正确的用户名和密码后,将会跳转到主界面。
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, QStackedWidget
class LoginWidget(QWidget):
def __init__(self):
super().__init__()
self.username_edit = QLineEdit()
self.password_edit = QLineEdit()
self.password_edit.setEchoMode(QLineEdit.Password)
login_button = QPushButton('登录')
login_button.clicked.connect(self.login)
vbox = QVBoxLayout()
vbox.addWidget(QLabel('用户名'))
vbox.addWidget(self.username_edit)
vbox.addWidget(QLabel('密码'))
vbox.addWidget(self.password_edit)
vbox.addWidget(login_button)
self.setLayout(vbox)
def login(self):
if self.username_edit.text() == 'admin' and self.password_edit.text() == '123456':
stacked_widget.setCurrentIndex(1)
class MainWidget(QWidget):
def __init__(self):
super().__init__()
logout_button = QPushButton('退出登录')
logout_button.clicked.connect(self.logout)
vbox = QVBoxLayout()
vbox.addWidget(QLabel('欢迎使用'))
vbox.addWidget(logout_button)
self.setLayout(vbox)
def logout(self):
stacked_widget.setCurrentIndex(0)
app = QApplication(sys.argv)
login_widget = LoginWidget()
main_widget = MainWidget()
stacked_widget = QStackedWidget()
stacked_widget.addWidget(login_widget)
stacked_widget.addWidget(main_widget)
stacked_widget.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了两个QWidget作为登录界面和主界面。然后,我们使用QVBoxLayout将每个QWidget中的控件组合起来。
我们还创建了一个QStackedWidget,并将两个QWidget添加到堆栈中。默认情况下,堆栈中显示第一个QWidget。
在LoginWidget中,我们使用了login函数来验证用户名和密码是否正确。如果验证成功,则使用setCurrentIndex函数将堆栈的当前索引设置为1,即主界面。在MainWidget中,我们创建了一个logout函数来退出登录,也是使用setCurrentIndex函数将堆栈的当前索引设置为0,即登录界面。
我们在最后一行使用了app.exec_()来运行应用程序。