前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 单词测试1源代码

Python 单词测试1源代码

作者头像
叶子陪你玩
发布2021-09-15 10:52:39
6880
发布2021-09-15 10:52:39
举报

第一部分主要分为:

  • 界面设计
  • 登录功能实现
  • 注册功能实现

界面设计

登录界面代码:

ui_login.py

代码语言:javascript
复制
from PySide2 import QtCore, QtGui, QtWidgets

class Ui_Login(object):
    def setupUi(self, Login):
        Login.setObjectName("Login")
        Login.resize(480, 320)
        self.label = QtWidgets.QLabel(Login)
        self.label.setGeometry(QtCore.QRect(10, 20, 451, 51))
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setWeight(75)
        font.setBold(True)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(Login)
        self.label_2.setGeometry(QtCore.QRect(10, 90, 141, 51))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label_2.setFont(font)
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(Login)
        self.label_3.setGeometry(QtCore.QRect(10, 150, 141, 51))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label_3.setFont(font)
        self.label_3.setAlignment(QtCore.Qt.AlignCenter)
        self.label_3.setObjectName("label_3")
        self.lineEdit = QtWidgets.QLineEdit(Login)
        self.lineEdit.setGeometry(QtCore.QRect(170, 90, 281, 41))
        font = QtGui.QFont()
        font.setPointSize(16)
        self.lineEdit.setFont(font)
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(Login)
        self.lineEdit_2.setGeometry(QtCore.QRect(170, 150, 281, 41))
        font = QtGui.QFont()
        font.setPointSize(16)
        self.lineEdit_2.setFont(font)
        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.pushButton = QtWidgets.QPushButton(Login)
        self.pushButton.setGeometry(QtCore.QRect(170, 230, 111, 61))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(Login)
        self.pushButton_2.setGeometry(QtCore.QRect(320, 230, 121, 61))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.pushButton_2.setFont(font)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("../Downloads/register.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton_2.setIcon(icon)
        self.pushButton_2.setObjectName("pushButton_2")

        self.retranslateUi(Login)
        QtCore.QMetaObject.connectSlotsByName(Login)

    def retranslateUi(self, Login):
        Login.setWindowTitle(QtWidgets.QApplication.translate("Login", "登录", None, -1))
        self.label.setText(QtWidgets.QApplication.translate("Login", "欢迎使用,请登录", None, -1))
        self.label_2.setText(QtWidgets.QApplication.translate("Login", "用户名:", None, -1))
        self.label_3.setText(QtWidgets.QApplication.translate("Login", "密码:", None, -1))
        self.pushButton.setText(QtWidgets.QApplication.translate("Login", "登录", None, -1))
        self.pushButton_2.setText(QtWidgets.QApplication.translate("Login", "注册", None, -1))

注册界面代码:

ui_register.py

代码语言:javascript
复制
from PySide2 import QtCore, QtGui, QtWidgets

class Ui_Register(object):
    def setupUi(self, Register):
        Register.setObjectName("Register")
        Register.resize(480, 360)
        self.label = QtWidgets.QLabel(Register)
        self.label.setGeometry(QtCore.QRect(30, 10, 421, 51))
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setWeight(75)
        font.setBold(True)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(Register)
        self.label_2.setGeometry(QtCore.QRect(10, 80, 161, 51))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label_2.setFont(font)
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")
        self.lineEdit = QtWidgets.QLineEdit(Register)
        self.lineEdit.setGeometry(QtCore.QRect(180, 90, 281, 41))
        font = QtGui.QFont()
        font.setPointSize(16)
        self.lineEdit.setFont(font)
        self.lineEdit.setObjectName("lineEdit")
        self.label_3 = QtWidgets.QLabel(Register)
        self.label_3.setGeometry(QtCore.QRect(10, 130, 161, 61))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label_3.setFont(font)
        self.label_3.setAlignment(QtCore.Qt.AlignCenter)
        self.label_3.setObjectName("label_3")
        self.lineEdit_2 = QtWidgets.QLineEdit(Register)
        self.lineEdit_2.setGeometry(QtCore.QRect(180, 140, 281, 41))
        font = QtGui.QFont()
        font.setPointSize(16)
        self.lineEdit_2.setFont(font)
        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.label_4 = QtWidgets.QLabel(Register)
        self.label_4.setGeometry(QtCore.QRect(10, 180, 161, 61))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label_4.setFont(font)
        self.label_4.setAlignment(QtCore.Qt.AlignCenter)
        self.label_4.setObjectName("label_4")
        self.lineEdit_3 = QtWidgets.QLineEdit(Register)
        self.lineEdit_3.setGeometry(QtCore.QRect(180, 190, 281, 41))
        font = QtGui.QFont()
        font.setPointSize(16)
        self.lineEdit_3.setFont(font)
        self.lineEdit_3.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.pushButton = QtWidgets.QPushButton(Register)
        self.pushButton.setGeometry(QtCore.QRect(180, 260, 131, 61))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Register)
        QtCore.QMetaObject.connectSlotsByName(Register)

    def retranslateUi(self, Register):
        Register.setWindowTitle(QtWidgets.QApplication.translate("Register", "注册", None, -1))
        self.label.setText(QtWidgets.QApplication.translate("Register", "欢迎使用,请注册", None, -1))
        self.label_2.setText(QtWidgets.QApplication.translate("Register", "用户名:", None, -1))
        self.label_3.setText(QtWidgets.QApplication.translate("Register", "密码:", None, -1))
        self.label_4.setText(QtWidgets.QApplication.translate("Register", "确认密码:", None, -1))
        self.pushButton.setText(QtWidgets.QApplication.translate("Register", "提交", None, -1))

首页界面代码:

ui_home.py

代码语言:javascript
复制
from PySide2 import QtCore, QtGui, QtWidgets

class Ui_Home(object):
    def setupUi(self, Home):
        Home.setObjectName("Home")
        Home.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(Home)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(20, 20, 751, 51))
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setWeight(75)
        font.setBold(True)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(100, 110, 140, 131))
        self.pushButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("button.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton.setIcon(icon)
        self.pushButton.setIconSize(QtCore.QSize(141, 141))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(320, 110, 141, 141))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(560, 110, 141, 141))
        self.pushButton_3.setObjectName("pushButton_3")
        Home.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(Home)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
        self.menubar.setObjectName("menubar")
        Home.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(Home)
        self.statusbar.setObjectName("statusbar")
        Home.setStatusBar(self.statusbar)

        self.retranslateUi(Home)
        QtCore.QMetaObject.connectSlotsByName(Home)

    def retranslateUi(self, Home):
        Home.setWindowTitle(QtWidgets.QApplication.translate("Home", "MainWindow", None, -1))
        self.label.setText(QtWidgets.QApplication.translate("Home", "welcome ", None, -1))
        self.pushButton_2.setText(QtWidgets.QApplication.translate("Home", "待更新", None, -1))
        self.pushButton_3.setText(QtWidgets.QApplication.translate("Home", "待更新", None, -1))

完整主程序代码:

main.py

代码语言:javascript
复制
import sys
import json
from PySide2.QtWidgets import *
from PySide2.QtCore import *
from ui_login import Ui_Login
from ui_home import Ui_Home
from ui_register import Ui_Register

class Test(QMainWindow, Ui_Home):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show_login_window()
        self.login_window.pushButton_2.clicked.connect(self.show_register_window)
        self.login_window.pushButton.clicked.connect(self.verify_login)

    def show_login_window(self):
        self.login_widget = QWidget()
        self.login_window = Ui_Login()
        self.login_window.setupUi(self.login_widget)
        self.login_widget.show()

    def show_register_window(self):
        self.register_widget = QWidget()
        self.register_window = Ui_Register()
        self.register_window.setupUi(self.register_widget)
        self.register_widget.show()
        self.register_window.pushButton.clicked.connect(self.verify_register)


    def verify_login(self):
        with open('user.json', 'r') as f:
            users = json.load(f)
        self.name = self.login_window.lineEdit.text()
        self.password = self.login_window.lineEdit_2.text()
        for user in users:
            if user['name'] == self.name and user['password'] == self.password:
                QMessageBox.information(self,'提示','登录成功',QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
                self.login_widget.close()
                self.show()
                break
        else:
            QMessageBox.information(self, '提示', '账户或者密码错误,\n请重新登录', QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
            self.login_window.lineEdit.setText('')
            self.login_window.lineEdit_2.setText('')

    def verify_register(self):
        with open('user.json', 'r') as f:
            users = json.load(f)
        self.name = self.register_window.lineEdit.text()
        self.password = self.register_window.lineEdit_2.text()
        self.password2 = self.register_window.lineEdit_3.text()
        for user in users:
            if user['name'] == self.name:
                QMessageBox.information(self, '提示', '该用户名已经存在,\n请重新输入', QMessageBox.Yes | QMessageBox.No,
                                        QMessageBox.Yes)
                break
        else:
            if self.password == self.password2:
                with open('user.json', 'w') as f:
                    users.append({'id':len(users)+1,'name':f'{self.name}','password':f'{self.password}'})
                    json.dump(users,f)
                QMessageBox.information(self, '提示', '注册成功', QMessageBox.Yes | QMessageBox.No,
                                        QMessageBox.Yes)
                self.register_widget.close()

            else:
                QMessageBox.information(self, '提示', '两次密码不一致,\n请重新输入密码', QMessageBox.Yes | QMessageBox.No,
                                        QMessageBox.Yes)
                self.password = self.register_window.lineEdit_2.setText('')
                self.password2 = self.register_window.lineEdit_3.setText('')

if __name__ == "__main__":
    app = QApplication(sys.argv)
    test = Test()
    # Qt主循环 和 程序退出
    sys.exit(app.exec_())
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档