用pyside2包写了登录页面和主页面,可以参考的资料很少,特别是登录页面跳转到主界面,隐藏登录页面的功能,尝试了很多次才实现。记录与此,希望能给使用pyside2的朋友提供帮助,少走一些弯路。
包含两个py文件
登录login.py
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
from PySide2 import QtCore, QtGui, QtWidgets
import sys
from mainwindow import MainWindow
class LoginWidget(QtWidgets.QMainWindow):
def __init__(self):
super(LoginWidget, self).__init__()
# 设定登录页面大小
self.resize(433, 334)
self.centralwidget = QtWidgets.QWidget(self)
self.setCentralWidget(self.centralwidget)
# 添加组控件
self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox.setGeometry(QtCore.QRect(50, 60, 361, 171))
self.groupBox.setTitle('用户登录')
self.label_3 = QtWidgets.QLabel(self.groupBox)
self.label_3.setGeometry(QtCore.QRect(30, 30, 48, 16))
self.label_3.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_3.setText('用户名称')
self.label_4 = QtWidgets.QLabel(self.groupBox)
self.label_4.setGeometry(QtCore.QRect(30, 80, 48, 16))
self.label_4.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_4.setText('用户密码')
self.lineEdit_1 = QtWidgets.QLineEdit(self.groupBox)
self.lineEdit_1.setGeometry(QtCore.QRect(120, 30, 200, 20))
self.lineEdit_1.setMaximumSize(QtCore.QSize(200, 20))
self.lineEdit = QtWidgets.QLineEdit(self.groupBox)
self.lineEdit.setGeometry(QtCore.QRect(120, 80, 200, 20))
self.lineEdit.setMaximumSize(QtCore.QSize(200, 20))
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(110, 260, 75, 25))
self.pushButton.setMaximumSize(QtCore.QSize(16777215, 25))
self.pushButton.setText('确定')
# 确定按钮绑定回车快捷键
self.pushButton.setShortcut('Enter')
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(240, 260, 75, 25))
self.pushButton_2.setMaximumSize(QtCore.QSize(16777215, 25))
self.pushButton_2.setText('取消')
# 禁止窗口最大最小化
self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint)
# 禁止拉伸窗口
self.setFixedSize(self.width(), self.height())
# 密码隐藏
self.lineEdit.setEchoMode(QtWidgets.QLineEdit.Password)
# 连接信号和槽函数,实现功能:点击取消按钮,退出应用
self.connect(self.pushButton_2, QtCore.SIGNAL('clicked()'), self.closeWin)
# 连接信号和函数,实现功能:点击确定按钮,进入主窗口
self.pushButton.clicked.connect(self.openMain)
def openMain(self):
if self.lineEdit_1.text() == 'user' and self.lineEdit.text() == '123' :
self.mw = MainWindow()
self.mw.show()
self.hide()
else:
# 密码错误,弹出提示框
QtWidgets.QMessageBox.information(self, u'提示', u'密码错误,请重新输入', QtWidgets.QMessageBox.Ok)
print('密码错误,请重新输入')
def closeWin(self):
self.close()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
gui = LoginWidget()
gui.show()
sys.exit(app.exec_())
主页面mainwindow.py
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
from PySide2 import QtWidgets
import sys
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
欢迎转载,转载请注明出处,谢谢