由于学校课程的项目,最近最近在学习如何利用Python语言和SQL Server编写一个读者图书借阅、查询管理的小程序。以此为契机吧,自己便开始了学习之路~
这篇文章主要介绍自己如何使用PyQt5编写GUI界面。

自己使用到的工具

  • VS Code
  • PyQt5依赖包
  • Qt Designer

Python几种常见的GUI库

Tkinter
Tkinter是Python自带的量轻级的简单GUI库,使用也较为简单。但是Tkinter之适用于基础和小型程序的开发,界面的美观程度也相对有限。

在网上找到了比较全面介绍Tkinter的使用教程:
https://www.cnblogs.com/shwee/p/9427975.html
https://www.runoob.com/python/python-gui-tkinter.htmlPyQt5
PyQt5算是比较成熟的GUI库了,PyQt从著名的由C++编写的Qt库移植封装到Python而来。同时,利用PyQt5开发GUI比较美观,同时利用Qt Designer可以拖动一些控件,实现GUI可视化的快速开发,可通过pyuic5工具转化为.py文件。在这里,自己选择了PyQt5开发前端界面。

安装PyQt5和Qt Designer

安装过程较为简单,只需在命令行窗口输入两行命令(在国内可以使用清华大学tuna镜像站,下载依赖包更快):

pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple  #安装PyQt5pip install PyQt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple # 安装Qt Designer

如图:

**PS:若使用Anaconda,会省去很多环境配置步骤,这里只需安装PyQt5-tools即可,命令同上。**如果想使用Anaconda,这里有详尽的配置及使用方法:Anaconda详细安装及使用教程(带图文)

PS:为了今后打开方便,可以创建一个快捷方式哦~

Qt Designer界面如下:

关于Qt Designer的使用方法,可以自行找找度娘,使用方法很多啦~~这里放一个教程:PyQt5速成教程

导出为.py文件 当我们按照自己的需求,设计好了相关的界面后,便可以导入成.py文件啦~

设计保存后,桌面上会有一个.ui文件,这个就是Qt Designer生成的XML格式的文件。

这里,我们使用pyuic5这个插件转换文件格式。转到这个文件夹目录后,在命令行窗口输入如下格式命令:

pyuic5 - o 目标文件名.py 源文件名.ui1

如我的这样做的:

此时,会发现,文件夹多了一个转换后的同名.py文件:

打开SetupUi.py文件,发现里面代码很长,但是已经自动生成了,这样少了很多敲代码的步骤呢~

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'SetupUi.ui'## Created by: PyQt5 UI code generator 5.13.0## WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_mainWindow(object):    def setupUi(self, mainWindow):        mainWindow.setObjectName("mainWindow")        mainWindow.resize(561, 491)        mainWindow.setAnimated(False)        self.centralwidget = QtWidgets.QWidget(mainWindow)        self.centralwidget.setObjectName("centralwidget")        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)        self.verticalLayout.setObjectName("verticalLayout")        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)        self.tabWidget.setObjectName("tabWidget")        self.tab = QtWidgets.QWidget()        self.tab.setObjectName("tab")        self.formLayout = QtWidgets.QFormLayout(self.tab)        self.formLayout.setObjectName("formLayout")        self.label1 = QtWidgets.QLabel(self.tab)        self.label1.setObjectName("label1")        self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.label1)        self.graphicsView = QtWidgets.QGraphicsView(self.tab)        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))        brush.setStyle(QtCore.Qt.NoBrush)        self.graphicsView.setBackgroundBrush(brush)        self.graphicsView.setObjectName("graphicsView")        self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.graphicsView)        self.buttonBox = QtWidgets.QDialogButtonBox(self.tab)        self.buttonBox.setStatusTip("")        self.buttonBox.setAccessibleName("")        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Close|QtWidgets.QDialogButtonBox.Ok)        self.buttonBox.setCenterButtons(False)        self.buttonBox.setObjectName("buttonBox")        self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.buttonBox)        self.frame = QtWidgets.QFrame(self.tab)        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)        self.frame.setObjectName("frame")        self.formLayout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.frame)        self.tabWidget.addTab(self.tab, "")        self.tab_2 = QtWidgets.QWidget()        self.tab_2.setObjectName("tab_2")        self.tabWidget.addTab(self.tab_2, "")        self.verticalLayout.addWidget(self.tabWidget)        mainWindow.setCentralWidget(self.centralwidget)        self.menubar = QtWidgets.QMenuBar(mainWindow)        self.menubar.setGeometry(QtCore.QRect(0, 0, 561, 23))        self.menubar.setObjectName("menubar")        self.menu_options = QtWidgets.QMenu(self.menubar)        self.menu_options.setObjectName("menu_options")        self.menu_about = QtWidgets.QMenu(self.menubar)        self.menu_about.setObjectName("menu_about")        mainWindow.setMenuBar(self.menubar)        self.statusbar = QtWidgets.QStatusBar(mainWindow)        self.statusbar.setObjectName("statusbar")        mainWindow.setStatusBar(self.statusbar)        self.action = QtWidgets.QAction(mainWindow)        self.action.setCheckable(False)        self.action.setWhatsThis("")        self.action.setShortcutContext(QtCore.Qt.WindowShortcut)        self.action.setObjectName("action")        self.action_2 = QtWidgets.QAction(mainWindow)        self.action_2.setShortcutContext(QtCore.Qt.ApplicationShortcut)        self.action_2.setMenuRole(QtWidgets.QAction.QuitRole)        self.action_2.setObjectName("action_2")        self.menu_options.addAction(self.action_2)        self.menu_about.addAction(self.action)        self.menubar.addAction(self.menu_options.menuAction())        self.menubar.addAction(self.menu_about.menuAction())        self.retranslateUi(mainWindow)        self.tabWidget.setCurrentIndex(0)        QtCore.QMetaObject.connectSlotsByName(mainWindow)    def retranslateUi(self, mainWindow):        _translate = QtCore.QCoreApplication.translate        mainWindow.setWindowTitle(_translate("mainWindow", "MainWindow"))        self.tabWidget.setToolTip(_translate("mainWindow", "

使用VS Code编写基础程序

使用VS Code打开这个文件夹,秉承界面和其他操作分离的原则,我们可以新建一个.py文件,如命名为ConnetDatabase.py,从而调用刚才生成的界面模块,新建一个MyWindow的子类,继承于QMainWindow和Ui_mainWindow父类,并初始化,编写构造函数即可。

最后,创建一个名为`import sys

from PyQt5.QtWidgets import QApplication, QMainWindow  #导入PyQt相关模块from  SetupUi import *  #导入之前新生成的窗口模块class MyWindow(QMainWindow, Ui_mainWindow):    def __init__(self, parent=None):        super(MyWindow, self).__init__(parent)        self.setupUi(self)if __name__ == '__main__':    app = QApplication(sys.argv)    myWin = MyWindow()  #创建对象    myWin.show()    #显示窗口    sys.exit(app.exec_())`的对象,启动即可。

运行后的效果如图:

至此,基本的窗口创建成功,便可以开始写后端的具体代码实现了~

你学会了吗 源码获取后台私信小编源码获取

pyqt5如何循环遍历控件名_利用Python的PyQt5编写GUI界面教学,QT5还是比较难的相关推荐

  1. pyqt5如何循环遍历控件名_如何用 PyQt5 快速构建一个简单的 GUI 应用

    点击上方"Python全家桶","星标"或"置顶" 关键时刻,第一时间送达 本文已获授权,欢迎分享转发 1. 介绍 Python GUI 常 ...

  2. pyqt5如何循环遍历控件名_PyQt5 控件学习(一个一个学习之QObject对象)

    首先我们要知道控件之间的继承结构,并按照它去学习: 下面是基类的继承图: 所以,我们首先学习的是QObject 和 QWidget 这两个,然后再学其他的. 一: QObject 类: 1, 首先看Q ...

  3. python制作软件界面_使用Python制作一个带GUI界面的词云自动生成工具(一)

    在现实生活中你可能会遇到这种情况:想知道一篇论文中哪个词语最多,哪些词语最少(以此判断文章的主要内容):想知道一部小说中哪一个人物出现的次数最多(当然,出现次数最多的那个人也不一定是主脚):想知道一部 ...

  4. python uiautomation 控件序号_使用python UIAutomation从QQ2016(8.0)群界面获取所有群成员详细资料,...

    automation.py是我写的一个python封装微软UIAutomation API的一个module,使用非常简单 运行automation.py -h查看帮助 首先打开qq群聊天窗口,运行a ...

  5. python经纬度获取县名_利用 Python 批量获取县镇运输距离

    起因 最近做规划项目,领导让查出某几个市的所有乡镇级行政区域,距离所在县级行政中心的交通运输距离.想着也不是啥难事儿,高德地图一搜就有. 当我把各市行政区划统计完,发现一共有五百多个乡镇,意味着要在地 ...

  6. python词云去除词_使用Python制作一个带GUI界面的词云自动生成工具(连载五)

    上一篇中我们介绍了自动生成词云工具(GUI)中数据清洗界面的实现过程(详解词云自动生成工具的数据清洗界面制作过程(连载四)),了解掌握了Grid.Pack混合布局的方法.本篇我们将讨论Python自动 ...

  7. python color属性_使用Python制作一个带GUI界面的词云自动生成工具(连载七)

    前几篇向大家介绍了词云自动生成工具(GUI)的详解GUI词云自动生成工具中词云属性设置界面的实现(连载六).通过前面内容我们基本构建出了词云自动生成工具的主要框架.本篇结合tkinter中的filed ...

  8. pythongui登录界面密码显示_用python写一个带有gui界面的密码生成器

    需要用到的库: tkinter:构建gui界面 pyperclip:复制功能 random:生成随机数 string:处理字符串 代码: from tkinter import * import ra ...

  9. python界面设计实例qt_python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例...

    在默认情况下,我们使用PyQt5创建出来的窗口和部件都是默认的样式,虽然谈不上很丑,但是也毫无美感可言.其实,在PyQt5中,我们可以有较高的自由度来自定义窗口和各种小部件的样式,通过自定义这些样式, ...

最新文章

  1. SAP 物料主数据里的Commodity Code
  2. python三大神器之装饰器
  3. 安装MySQL时出现黄色感叹号,提示3306已被占用
  4. [翻译] ASP.NET Core 2.2 正式版发布
  5. unity发布成手机app怎么不能被顶_Unity中Android API 28之后无法HTTP请求
  6. 今晚8点直播(内含福利)丨 Oracle RAC集群安装部署
  7. asp.net 文件下载(txt,rar,pdf,word,excel,ppt)
  8. 初次遇见Visual Studio 2008 Beta 2 中的bug
  9. 为何要搭建大数据分析平台
  10. 《JAVA疯狂讲义》学习笔记第六天
  11. imx6ull设备树
  12. python迷宫万花筒代码_Python实现PS滤镜的万花筒效果示例,python万花筒
  13. 太一星晨印朝晖:从应用交付到融合安全
  14. Android系统中设置TextView的字符间距
  15. .Net使用DES解密发生“数据不正确”的错误
  16. 2021年5月23日哈工大scir笔试
  17. 自考计算机专业就业率,自考计算机专业就业前景和就业选择
  18. xml的基础格式详解
  19. 机器学习笔记(机器学习很难么???那必然难啊!!!)
  20. 各位童鞋是肿么来到这个世界上的鸟

热门文章

  1. 是知当代之士、驰骛之曹,书读纵横,则思诸侯之变
  2. 解决iOS机型点击输入框不能聚焦的问题
  3. 由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法
  4. 用Java获取文件的MD5校验和
  5. C ++ 17中有哪些新功能?
  6. 无法绑定到“ ngModel”,因为它不是“ input”的已知属性
  7. 什么是C ++中的“-gt;”运算符?
  8. nginx多层反向代理获取客户端真实ip
  9. C语言 · 计算时间
  10. 微信说中国人的国庆长假 境内游西湖外滩上榜