Python语言的能力我们都知道,在有桌面需求时,也有很多选择,我比较常用的就是Pyqt5,但是相对来说Pyqt5的资料不是很多,使用的过程中有许多东西需要我们考虑。包括ui界面、css样式、算法和逻辑等。
pyqt5的界面主要有2中方式:一是通过designer工具可视化布局在生成py文件,二是通过代码逻辑。直接代码逻辑完成布局难度很大,对于刚接触pyqt5的开发人员来说,第一种方式比较适合,但是在遇到界面比较复杂,需要修改时,我们就需要注意生成的py布局文件和原有逻辑如何共存这个问题。
本博客手机通过pycharm来开发pyqt5的,相关配置请参考:PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)详细教程
通过上图将生成如下内容的login.py文件
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'login.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# 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, QtWidgetsclass Ui_LoginMainWindow(object):def setupUi(self, LoginMainWindow):LoginMainWindow.setObjectName("LoginMainWindow")LoginMainWindow.setEnabled(True)LoginMainWindow.resize(366, 230)font = QtGui.QFont()font.setFamily("黑体")font.setPointSize(12)font.setStrikeOut(False)LoginMainWindow.setFont(font)self.centralwidget = QtWidgets.QWidget(LoginMainWindow)self.centralwidget.setObjectName("centralwidget")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(90, 80, 36, 16))self.label.setStyleSheet("font: 12pt \"Agency FB\";")self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(self.centralwidget)self.label_2.setGeometry(QtCore.QRect(90, 118, 36, 16))self.label_2.setStyleSheet("font: 12pt \"Agency FB\";")self.label_2.setObjectName("label_2")self.name = QtWidgets.QLineEdit(self.centralwidget)self.name.setEnabled(True)self.name.setGeometry(QtCore.QRect(140, 78, 130, 25))self.name.setObjectName("name")self.password = QtWidgets.QLineEdit(self.centralwidget)self.password.setGeometry(QtCore.QRect(140, 115, 130, 25))font = QtGui.QFont()font.setFamily("黑体")font.setPointSize(12)font.setStrikeOut(False)font.setKerning(True)font.setStyleStrategy(QtGui.QFont.PreferAntialias)self.password.setFont(font)self.password.setObjectName("password")self.label_3 = QtWidgets.QLabel(self.centralwidget)self.label_3.setGeometry(QtCore.QRect(160, 20, 51, 27))self.label_3.setStyleSheet("font: 20pt \"隶书\";")self.label_3.setObjectName("label_3")self.loginbutton = QtWidgets.QPushButton(self.centralwidget)self.loginbutton.setGeometry(QtCore.QRect(90, 170, 180, 30))self.loginbutton.setStyleSheet("font: 12pt \"Agency FB\";\n""background-color: rgb(0, 170, 255);")self.loginbutton.setObjectName("loginbutton")self.message = QtWidgets.QLabel(self.centralwidget)self.message.setGeometry(QtCore.QRect(90, 150, 181, 20))self.message.setText("")self.message.setObjectName("message")LoginMainWindow.setCentralWidget(self.centralwidget)self.retranslateUi(LoginMainWindow)self.loginbutton.clicked.connect(LoginMainWindow.click_login_btn)QtCore.QMetaObject.connectSlotsByName(LoginMainWindow)def retranslateUi(self, LoginMainWindow):_translate = QtCore.QCoreApplication.translateLoginMainWindow.setWindowTitle(_translate("LoginMainWindow", "登录界面"))self.label.setText(_translate("LoginMainWindow", "账号"))self.label_2.setText(_translate("LoginMainWindow", "密码"))self.label_3.setText(_translate("LoginMainWindow", "EVT"))self.loginbutton.setText(_translate("LoginMainWindow", "安全登录"))
代码如下(示例):
import sys
from PyQt5 import QtWidgets
from main import MainWindow
from login import Ui_LoginMainWindow
from config import *class Login(QtWidgets.QMainWindow, Ui_LoginMainWindow):def __init__(self):super(Login, self).__init__()self.setupUi(self)def click_login_btn(self):"""实现login函数,textEdit是我们放上去的文本框的id"""name = self.name.text()password = self.password.text()try:if name == 'ty' and password == '123456':print('登陆成功')self.message.setText('登陆成功')self.close()# 开启主窗口self.main_window = MainWindow()self.main_window.show()else:self.message.setText('账号密码错误')except Exception as e:print(e)self.message.setText("其他错误")if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)login = Login()login.show()# main_window = MainWindow()# main_window.show()sys.exit(app.exec_())