pyqt5制作登陆界面

pyqt5可以快速做登陆界面,修改也很快,界面和逻辑代码完全分离。

文章目录

  • 前言
  • 一、用Qt Designer快速搭建界面,设置样式
  • 二、用pyUIC把UI文件转换py文件
  • 三    用pyRcc将资源qrc文件转换为py文件。
  • 四    自己创建个py文件,编写逻辑代码


一 打开QT Designer设计界面

一、转换文件为py文件

二、使用步骤

1.引入库

代码如下(示例):


2.读入数据

转换的资源文件(二进制)souce.py:


 因为文件太长,这里只截取部分

三 将ui文件转换为py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'UI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1175, 582)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(30, 40, 365, 510))
        self.label.setStyleSheet("border-image: url(:/image/屏幕截图 2022-09-27 105037.png);\n"
"border-top-left-radius:40px;\n"
"border-bottom-left-radius:40px;")
        self.label.setText("")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(396, 40, 365, 510))
        self.label_2.setStyleSheet("\n"
"background-color: rgb(255, 255, 255);\n"
"border-top-right-radius:40px;\n"
"border-bottom-right-radius:40px;")
        self.label_2.setText("")
        self.label_2.setObjectName("label_2")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(470, 60, 174, 41))
        self.widget.setObjectName("widget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
        self.horizontalLayout.setContentsMargins(15, 0, 15, 0)
        self.horizontalLayout.setSpacing(10)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setStyleSheet("#pushButton{\n"
"    border:none;\n"
"}\n"
"#pushButton:focus{\n"
"    \n"
"    color: rgb(255, 85, 255);\n"
"}\n"
"\n"
"")
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.line = QtWidgets.QFrame(self.widget)
        self.line.setFrameShape(QtWidgets.QFrame.VLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.horizontalLayout.addWidget(self.line)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setStyleSheet("#pushButton_2{\n"
"    border:none;\n"
"}\n"
"#pushButton_2:focus{\n"
"    \n"
"    color: rgb(255, 85, 255);\n"
"}\n"
"\n"
"")
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.widget_2 = QtWidgets.QWidget(self.centralwidget)
        self.widget_2.setGeometry(QtCore.QRect(420, 130, 311, 401))
        self.widget_2.setObjectName("widget_2")
        self.lineEdit = QtWidgets.QLineEdit(self.widget_2)
        self.lineEdit.setGeometry(QtCore.QRect(30, 70, 251, 41))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.lineEdit.setFont(font)
        self.lineEdit.setStyleSheet("border: 1px solid rgb(0, 0, 0);\n"
"border-radius:10px;")
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.widget_2)
        self.lineEdit_2.setGeometry(QtCore.QRect(30, 140, 251, 41))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.lineEdit_2.setFont(font)
        self.lineEdit_2.setStyleSheet("border: 1px solid rgb(0, 0, 0);\n"
"border-radius:10px;")
        self.lineEdit_2.setText("")
        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.login_btn = QtWidgets.QPushButton(self.widget_2)
        self.login_btn.setGeometry(QtCore.QRect(70, 240, 191, 61))
        self.login_btn.setStyleSheet("#login_btn{\n"
"    background-color: rgb(0, 0, 0);\n"
"    color: rgb(255, 255, 255);\n"
"    border:1px solid rgb(0,0,0);\n"
"    border-radius:15px;\n"
"}\n"
"#login_btn:hover{\n"
"    background-color: rgb(255, 255, 255);\n"
"    color: rgb(255, 255, 255);\n"
"    \n"
"}\n"
"#login_btn:pressed{\n"
"padding-top:7px;\n"
"padding-left:7px;\n"
"\n"
"    \n"
"}")
        self.login_btn.setObjectName("login_btn")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(710, 60, 30, 30))
        self.pushButton_4.setStyleSheet("border:none;")
        self.pushButton_4.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/icon/X号.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton_4.setIcon(icon)
        self.pushButton_4.setIconSize(QtCore.QSize(40, 40))
        self.pushButton_4.setObjectName("pushButton_4")
        self.widget_3 = QtWidgets.QWidget(self.centralwidget)
        self.widget_3.setGeometry(QtCore.QRect(420, 120, 281, 301))
        self.widget_3.setObjectName("widget_3")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.widget_3)
        self.lineEdit_3.setGeometry(QtCore.QRect(20, 40, 210, 27))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.lineEdit_3.setFont(font)
        self.lineEdit_3.setStyleSheet("border: 1px solid rgb(0, 0, 0);\n"
"border-radius:10px;")
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.lineEdit_4 = QtWidgets.QLineEdit(self.widget_3)
        self.lineEdit_4.setGeometry(QtCore.QRect(20, 100, 210, 31))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.lineEdit_4.setFont(font)
        self.lineEdit_4.setStyleSheet("border: 1px solid rgb(0, 0, 0);\n"
"border-radius:10px;")
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.lineEdit_5 = QtWidgets.QLineEdit(self.widget_3)
        self.lineEdit_5.setGeometry(QtCore.QRect(20, 160, 210, 27))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.lineEdit_5.setFont(font)
        self.lineEdit_5.setStyleSheet("border: 1px solid rgb(0, 0, 0);\n"
"border-radius:10px;")
        self.lineEdit_5.setObjectName("lineEdit_5")
        self.login_btn_2 = QtWidgets.QPushButton(self.widget_3)
        self.login_btn_2.setGeometry(QtCore.QRect(40, 230, 191, 61))
        self.login_btn_2.setStyleSheet("#login_btn_2{\n"
"    background-color: rgb(0, 0, 0);\n"
"    color: rgb(255, 255, 255);\n"
"    border:1px solid rgb(0,0,0);\n"
"    border-radius:15px;\n"
"}\n"
"#login_btn_2:hover{\n"
"    background-color: rgb(255, 255, 255);\n"
"    color: rgb(255, 255, 255);\n"
"    \n"
"}\n"
"#login_btn_2:pressed{\n"
"padding-top:7px;\n"
"padding-left:7px;\n"
"\n"
"    \n"
"}")
        self.login_btn_2.setObjectName("login_btn_2")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        self.pushButton_4.clicked.connect(MainWindow.close) # type: ignore
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "登陆"))
        self.pushButton_2.setText(_translate("MainWindow", "注册"))
        self.lineEdit.setPlaceholderText(_translate("MainWindow", "账号:"))
        self.lineEdit_2.setPlaceholderText(_translate("MainWindow", "账号:"))
        self.login_btn.setText(_translate("MainWindow", "登陆"))
        self.lineEdit_3.setText(_translate("MainWindow", "输入账号:"))
        self.lineEdit_3.setPlaceholderText(_translate("MainWindow", "账号:"))
        self.lineEdit_4.setText(_translate("MainWindow", "输入密码:"))
        self.lineEdit_4.setPlaceholderText(_translate("MainWindow", "账号:"))
        self.lineEdit_5.setText(_translate("MainWindow", "账号:"))
        self.lineEdit_5.setPlaceholderText(_translate("MainWindow", "账号:"))
        self.login_btn_2.setText(_translate("MainWindow", "登陆"))
import source

四,创建一个ui_main文件,编写逻辑代码


from PyQt5.Qt import *
from UI import Ui_MainWindow

class Window(QMainWindow,Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.init_ui()
        self.connect_single()


    def init_ui(self):
        self.setupUi(self)
        self.widget_3.hide()

    def connect_single(self):
        self.pushButton.clicked.connect(self.change_widget2)
        self.pushButton_2.clicked.connect(self.chang_widget3)


    def change_widget2(self):
        self.widget_2.show()
        self.widget_3.hide()
    def chang_widget3(self):
        self.widget_2.hide()
        self.widget_3.show()




if __name__ == '__main__':
    import sys
    app=QApplication(sys.argv)
    win=Window()
    win.show()
    sys.exit(app.exec_())






运行效果如图

上面的窗口不能移动,增加下面代码即可

 #拖拽
    def mousePressEvent(self, event) -> None:
        if event.button() == Qt.LeftButton and self.isMaximized()==False:
            self.m_flag=True
            self.m_position=event.globalPos()-self.pos()#获取鼠标相对窗口位置
            event.accept()
            self.setCursor(QCursor(Qt.OpenHandCursor))
    def mouseMoveEvent(self, mouse_event) -> None:
        if Qt.LeftButton and self.m_flag:
            self.move(mouse_event.globalPos()-self.m_position)#更改窗口位置
            mouse_event.accept()
    def mouseReleaseEvent(self, mouse_event) -> None:
        self.m_flag=False
        self.setCursor(QCursor(Qt.ArrowCursor))

  • 6
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
PyQt5界面设计可以使用PyQt5的标准工具Designer来实现。Designer是一款可视化界面设计工具,可以帮助我们轻松创建界面元素。要安装和使用Designer,你可以在网上搜索相关的教程(视频)来进行参考,特别是在CSDN上有很多相关的教程和参考内容。如果你懂英语,还可以找到更多的参考资源。想了解界面设计元素的分类,你可以参考一下相关的文档和教程。至于具体的使用方法,你可以按照下面的步骤来进行操作: 1. 首先,你需要导入PyQt5的模块和QtWidgets模块。 2. 创建一个QApplication实例。 3. 创建一个QWidget实例,作为主窗口。 4. 创建一个Ui_Form实例,并调用它的setupUi()方法,将QWidget作为参数传入。这样就可以将设计好的界面元素加载到主窗口中。 5. 调用QWidget的show()方法,显示主窗口。 6. 最后,调用QApplication的exec_()方法,启动事件循环,使程序保持运行状态。 以上就是使用Designer进行PyQt5界面设计的基本步骤,你可以根据具体的需求进行进一步的开发和定制化控件。如果你想了解更多关于PyQt5界面设计的内容,可以参考引用中提供的系列教程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [PyQt5桌面应用开发(4):界面设计](https://blog.csdn.net/withstand/article/details/129736172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值