1、安装PyQt5。

(1)使用pip工具安装PyQt5工具。执行pip install PyQt5

(2)安装Qt Designer图形界面开发工具。执行pip install PyQt5-tools

安装完成后所在路径${python安装目录}/Lib/site-packages/pyqt5_tools/designer.exe。比如,如果你的python使用了默认安装,那么它的位置就是:C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib\site-packages\pyqt5_tools\Qt\bin

designer就是我们用来设计界面的工具了,我们打开它,可以看到它的大致功能。关于他的详细用法请参考Python写视图界面--pyqt的使用_小梁的博客-CSDN博客,比较详细的讲了这个工具的用法。这里不多赘述。

主界面如下:

2、使用designer做出界面框架。

一目了然,功能也很简单,从数据库中读到一条视频的信息,显示在不同位置。

3、格式转换

3.1 保存好我们的界面,需要指出的是,不像VS编写C#那样,pyqt5编写完界面后,代码和界面是完全分离的,因此,需要在界面编写时就定义好它们的名字,不然会在写代码时混淆。

3.2 在文件的同级目录下使用命令行工具  pyuic5 -o test.py test.ui  这里的test可以是你喜欢的任何名字,我把它保存成了liab.py。

4、代码编写

转换后的文件是一个.py文件,我们可以使用pycharm打开并编辑它。以下代码是此前所设计的界面所对应的代码,因此,你可以直接使用代码而不用手动设计图形界面来达到堆砌界面的目的。


from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(1123, 866)self.lastButton = QtWidgets.QPushButton(Form)self.lastButton.setGeometry(QtCore.QRect(1010, 750, 93, 28))self.lastButton.setObjectName("lastButton")self.nextButton = QtWidgets.QPushButton(Form)self.nextButton.setGeometry(QtCore.QRect(1010, 790, 93, 28))self.nextButton.setObjectName("nextButton")self.downloadButton = QtWidgets.QPushButton(Form)self.downloadButton.setGeometry(QtCore.QRect(1010, 830, 93, 28))self.downloadButton.setObjectName("downloadButton")self.piclabel = QtWidgets.QLabel(Form)self.piclabel.setGeometry(QtCore.QRect(0, 0, 981, 801))self.piclabel.setObjectName("piclabel")self.magmenttext = QtWidgets.QTextBrowser(Form)self.magmenttext.setGeometry(QtCore.QRect(0, 831, 1001, 31))self.magmenttext.setObjectName("magmenttext")self.label_7 = QtWidgets.QLabel(Form)self.label_7.setGeometry(QtCore.QRect(1020, 198, 61, 16))self.label_7.setObjectName("label_7")self.idlabel = QtWidgets.QLabel(Form)self.idlabel.setGeometry(QtCore.QRect(1020, 220, 72, 16))self.idlabel.setObjectName("idlabel")self.namelabel = QtWidgets.QLabel(Form)self.namelabel.setGeometry(QtCore.QRect(0, 800, 991, 31))self.namelabel.setObjectName("namelabel")self.label_2 = QtWidgets.QLabel(Form)self.label_2.setGeometry(QtCore.QRect(1021, 109, 60, 16))self.label_2.setObjectName("label_2")self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(1021, 21, 30, 16))self.label.setFrameShape(QtWidgets.QFrame.NoFrame)self.label.setObjectName("label")self.titlelabel = QtWidgets.QLabel(Form)self.titlelabel.setGeometry(QtCore.QRect(1021, 43, 72, 16))self.titlelabel.setObjectName("titlelabel")self.label_9 = QtWidgets.QLabel(Form)self.label_9.setGeometry(QtCore.QRect(1021, 65, 30, 16))self.label_9.setObjectName("label_9")self.sizelabel = QtWidgets.QLabel(Form)self.sizelabel.setGeometry(QtCore.QRect(1021, 87, 72, 16))self.sizelabel.setObjectName("sizelabel")self.datelabel = QtWidgets.QLabel(Form)self.datelabel.setGeometry(QtCore.QRect(1021, 131, 72, 16))self.datelabel.setObjectName("datelabel")self.label_6 = QtWidgets.QLabel(Form)self.label_6.setGeometry(QtCore.QRect(1021, 153, 30, 16))self.label_6.setObjectName("label_6")self.actresslabel = QtWidgets.QLabel(Form)self.actresslabel.setGeometry(QtCore.QRect(1021, 175, 72, 16))self.actresslabel.setObjectName("actresslabel")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))self.lastButton.setText(_translate("Form", "上一个"))self.nextButton.setText(_translate("Form", "下一个"))self.downloadButton.setText(_translate("Form", "下载"))self.piclabel.setText(_translate("Form", "TextLabel"))self.label_7.setText(_translate("Form", "当前排序"))self.idlabel.setText(_translate("Form", "TextLabel"))self.namelabel.setText(_translate("Form", "Textlabel"))self.label_2.setText(_translate("Form", "发行日期"))self.label.setText(_translate("Form", "番号"))self.titlelabel.setText(_translate("Form", "TextLabel"))self.label_9.setText(_translate("Form", "大小"))self.sizelabel.setText(_translate("Form", "TextLabel"))self.datelabel.setText(_translate("Form", "TextLabel"))self.label_6.setText(_translate("Form", "主演"))self.actresslabel.setText(_translate("Form", "TextLabel"))

为了后续维护方便,采用界面与业务逻辑相分离来实现。也就是通过创建主程序调用界面文件方式实现。这有2个好处。第1就是实现逻辑清晰。第2就是后续如果界面或者逻辑需要变更,好维护。新建call_liab.py文件程序,调用liab.py文件。

from liab import Ui_Form
import pymysql
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MyMainForm(QMainWindow, Ui_Form):def __init__(self, parent=None):super(MyMainForm, self).__init__(parent)self.setupUi(self)# 【读取按钮】功能self.nextButton.clicked.connect(self.nextButton_Clicked)self.lastButton.clicked.connect(self.lastButton_Clicked)self.idlabel.setText('1')conn = pymysql.connect(host='localhost', port=3306, user='root', password="123456", db="liab")cur = conn.cursor()# 执行sql语句和实现事件、、、sql = "SELECT * FROM code WHERE id=" + self.idlabel.text() + ";"cur.execute(sql)# 获取查询到的数据,是以字典的形式存储的,所以读取需要使用data[i][j]下标定位data = cur.fetchall()image = data[0][6]number = data[0][2]title = data[0][1]size = data[0][3]issuedate = data[0][4]actress = data[0][5]mangnet = data[0][7]self.piclabel.setPixmap(QPixmap(image))self.titlelabel.setText(number)self.sizelabel.setText(size)self.datelabel.setText(issuedate)self.actresslabel.setText(actress)self.magmenttext.setText(mangnet)self.namelabel.setText(title)def nextButton_Clicked(self):i = int(self.idlabel.text())i = i + 1print(i)self.idlabel.setText(str(i))print("load--file")conn = pymysql.connect(host='localhost', port=3306, user='root', password="123456", db="liab")cur = conn.cursor()# 执行sql语句和实现事件、、、sql = "SELECT * FROM code WHERE id="+self.idlabel.text()+";"cur.execute(sql)# 获取查询到的数据,是以字典的形式存储的,所以读取需要使用data[i][j]下标定位data = cur.fetchall()image = data[0][6]number = data[0][2]title = data[0][1]size =data[0][3]issuedate =data[0][4]actress =data[0][5]mangnet = data[0][7]self.piclabel.setPixmap(QPixmap(image))self.titlelabel.setText(number)self.sizelabel.setText(size)self.datelabel.setText(issuedate)self.actresslabel.setText(actress)self.magmenttext.setText(mangnet)self.namelabel.setText(title)# MyMainForm.setObjectName('title')# Ui_Form.setWindowTitle("title")def lastButton_Clicked(self):i = int(self.idlabel.text())i = i - 1self.idlabel.setText(str(i))conn = pymysql.connect(host='localhost', port=3306, user='root', password="123456", db="liab")cur = conn.cursor()# 执行sql语句和实现事件、、、sql = "SELECT * FROM code WHERE id="+self.idlabel.text()+";"cur.execute(sql)# 获取查询到的数据,是以字典的形式存储的,所以读取需要使用data[i][j]下标定位data = cur.fetchall()image = data[0][6]number = data[0][2]title = data[0][1]size = data[0][3]issuedate = data[0][4]actress = data[0][5]mangnet = data[0][7]self.piclabel.setPixmap(QPixmap(image))self.titlelabel.setText(number)self.sizelabel.setText(size)self.datelabel.setText(issuedate)self.actresslabel.setText(actress)self.magmenttext.setText(mangnet)self.namelabel.setText(title)if __name__ == "__main__":#固定的,PyQt5程序都需要QApplication对象。sys.argv是命令行参数列表,确保程序可以双击运行app = QApplication(sys.argv)#初始化myWin = MyMainForm()#将窗口控件显示在屏幕上myWin.show()#程序运行,sys.exit方法确保程序完整退出。sys.exit(app.exec_())

5、启动和最终效果

直接点击call_liab.py来启动我们的项目。

此项目可以和我之前的爬虫项目配合使用。爬爬爬!使用scrapy爬取你懂得的网站自建数据库!_小梁的博客-CSDN博客

用pyqt5做个图书馆数据管理客户端!--pyqt+mysql的使用(入门必看!)相关推荐

  1. mysql 类似于check_【小白福利—初级DBA入门必看】MySQL常用工具介绍(六)——客户端工具MySQL_check...

    作为程序员你对MySQLcheck了解多少呢?如果没有深入了解过那也不用担心,这里有最全最详细的介绍,现在跟着Amy了解也不算晚哦~ 1 . 简介 mysqlcheck用来维护表:check检查.re ...

  2. 【DIY】入门必看:arduino入门实用教程,esp8266获取互联网时间,nodemcu制作NTP客户端获取显示互联网时间...

    今天使用ESP8266(nodemcu)做一个互联网时间显示器,没错从互联网获取时间,精准高效,简单粗暴,不用对时.入门级详细教程哦! 按照国际惯例先展示成品:                     ...

  3. 分享一下自己做电影解说的步骤流程和经验,小白必看!

    因为工作的关系,视频制作剪辑之类的工作那是经常做,看到有不少朋友好像对这个挺感兴趣的就给大家分享一下,希望可以帮助大家. 文章涉及三个部分: 目录 一.整体流程 二.我遇见过的难点和解决办法 三.整理 ...

  4. 【小白福利—初级DBA入门必看】MySQL常用工具介绍(十)——客户端工具MySQL_slap

    马上又要进入周末了,勤劳的程序员们工作可以停,补充知识却不能停呀! Amy今天为大家介绍MySQLslap的相关内容,希望能够给大家带来帮助哦 1 . 简介 mysqlslap是一个诊断程序,旨在模拟 ...

  5. 求求你别再做低级的码农了!计算机专业的必看,这样做才能有出路!

    每年的六.七月都是高校的毕业季,也是应届大学生求职的高峰期.像程序员这个行业,其实程序员不一定是程序员,也有可能是码农.甚至码奴.像我也会收到私信,有人问我大学四年感觉自己学的不是很好,找工作怎样才能 ...

  6. 新手做自媒体短视频,想入行的必看哦!博主的真实收入?

    这期大周想跟你们聊聊关于恰饭(吃饭)的问题,主要从三个方面来说:恰饭的原则.博主是怎么恰饭的.博主的真实收入,感兴趣的小伙伴们一起看下去吧. 一.恰饭的原则 我先告诉大家我的恰饭原则: 1.基金开户这 ...

  7. python服务器qt客户端_python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例...

    本文在上文的基础上重新实现支持多线程的服务器. 以下为TCP客户端的程序代码: #!/usr/bin/env python3 import sys from PyQt5.QtCore import ( ...

  8. Python_杂学系列_4.利用BeautifulSoup和PyQt5做小案例

    利用BeautifulSoup和PyQt5做小案例 前言 一.介绍功能 二.程序步骤 1.引入库 2.窗体的创造 3.获取网络资源 4.全部代码 5.打包成EXE文件 总结 前言 这是鄙人第一次的小的 ...

  9. python中是干嘛的-python是做什么的,新手必看哦!

    原标题:python是做什么的,新手必看哦! ​python , 是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,Python 已经成为继JAVA,C 之后的的第三大语言.特点:简单易学 ...

  10. 初中三年级计算机表格考试模拟,初中三年要做这些事情,三张表格说透初中三年,收藏必看...

    原标题:初中三年要做这些事情,三张表格说透初中三年,收藏必看 初中三年是为中考而不断向前的日子,初中三年如何成长,如何有规划的学习? 初一大事表 ▲▲▲ 第一年,特别是第一学期,孩子刚上初中,同学间大 ...

最新文章

  1. 【牛客NOIP模拟】 牛牛的RPG游戏【二维偏序】【任意坐标斜率优化】【CDQ 分治】【李超线段树】
  2. 这个情人节,工程师用阿里云来试着表达不一样的爱意
  3. Python 实现简单的爬虫
  4. 千人千面之3D立体个人数据营销
  5. java 1.6 最大化_关于java:JDK 1.6和1.7中的新功能
  6. 如何查看Oracle数据库字符集 尚未研究
  7. Java 疑问自问自答
  8. 【转载】BitSet
  9. nginx CDN源站设置与回源host
  10. IEEE爬取摘要并翻译成中文
  11. python爬取京东商品评价信息
  12. VS调用大恒相机sdk实时显示图像并进行图像处理+OPENCV
  13. 知识图谱方向顶会小记
  14. qt QTableWidgetItem设置文字样式
  15. 使用Ant打包部署STAF插件
  16. 2015usnews美国大学计算机排名,2015年USNews美国大学研究生计算机工程专业排名
  17. 图形学创世纪:当科学照进影视与生活
  18. 乔布斯的斯坦福演讲(双语)
  19. 人机交互课设(1)-百度api调用_ASR
  20. C++ int 转字符串

热门文章

  1. 4.3 朴素贝叶斯分类实战——新闻分类、垃圾邮件识别
  2. 遗传优化算法优化LSTM-MSE
  3. 数据科学包8-pandas高级内容之聚合统计
  4. Prezi 7 大图形设计技巧,让视觉思维落地生根
  5. 游戏设计规则探秘之宾语
  6. 从零开始学建站-域名篇
  7. .NET中Web Service的异常机制
  8. 1.10 Linux文件目录用户与用户组修改
  9. 8.17 记忆增强图神经网络
  10. 文件——rstrip() 、lstrip()和 strip()、zip() 函数