返回顶部
首页 > 资讯 > 数据库 >Python+PyQt5+MySQL实现天气管理系统
  • 560
分享到

Python+PyQt5+MySQL实现天气管理系统

PythonPyQt5MySQL天气管理系统 2022-05-21 19:05:30 560人浏览 薄情痞子
摘要

在本篇博客中,我利用python语言其编写界面库PyQt5,然后通过连接Mysql数据库,实现了一个简单的天气管理小系统,该系统包含简单的增删查改四个主要功能。本文旨在解析实现的程序,能够让读者快速了解PyQt5图形

在本篇博客中,我利用python语言其编写界面库PyQt5,然后通过连接Mysql数据库,实现了一个简单的天气管理小系统,该系统包含简单的增删查改四个主要功能。本文旨在解析实现的程序,能够让读者快速了解PyQt5图形界面库,然后可以初步实现这样一个小的系统程序。

PyQt5简介

PyQt5本身来自c++的界面库Qt,经过一系列的封装移植到Python里面,作为Python的一个图像界面库,它继承了Python语言简单易实现的特点,可以实现基本的界面效果。里面有许多类实现了我们想要的窗体、表格、文本、图像等功能。在这个项目中也有所涉及,博主也是初次学这个库,然后写了这个小项目,里面可能会有一些不合适的地方,望谅解。

天气系统数据库

我将天气系统数据存入mysql数据库中,提取数据时用Python的pymysql库连接MySQL数据库,对数据库进行一系列操作。

这个数据库主要包含城市、时间、各个空气物质的含量、pm2.5、AQI指标等。如果需要数据可以在下面留言,我可以发给你们。

实现步骤

  • 导入所需要用的Python包:PyQt5,pymysql……没有的可以直接用pip安装
  • 创建所要编写的界面类,初始化界面
  • 连接数据库,获取数据
  • 建立表格、按钮布局
  • 实现功能函数
  • 测试

具体实现过程


#导入包
import pymysql
from functools import partial
from PyQt5.Qt import QWidget
from PyQt5 import QtGui,QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QFrame,QApplication,QDialog, QDialogButtonBox,
 QMessageBox,QVBoxLayout, QLineEdit,QTableWidgetItem,QTableWidget,QHBoxLayout)

#建立界面类
class creat_view(QDialog):
 def __init__(self,parent = None):
 super(creat_view,self).__init__(parent)

 #设置界面大小、名称、背景
 self.resize(1000,800)
 self.setWindowTitle('Database')
 self.setStyleSheet("background-image:url(tubiao_meitu.jpg)")

 #窗体属性
 self.setWindowFlags(Qt.Widget)


 #连接数据库
 db = pymysql.connect("localhost", "root", "passWord", "mysql",charset='utf8')
 #获取游标、数据
 cur = db.cursor()
 cur.execute("SELECT * FROM pm_25")
 data = cur.fetchall()

 #数据列名
 col_lst = [tup[0] for tup in cur.description]

 #数据的大小
 row = len(data)
 vol = len(data[0])


 #插入表格
 self.MyTable = QTableWidget(row,vol)
 font = QtGui.QFont('微软雅黑',10)

 #设置字体、表头
 self.MyTable.horizontalHeader().setFont(font)
 self.MyTable.setHorizontalHeaderLabels(col_lst)
 #设置竖直方向表头不可见
 self.MyTable.verticalHeader().setVisible(False)
 self.MyTable.setFrameShape(QFrame.NoFrame)
#设置表格颜色 self.MyTable.horizontalHeader().setStyleSheet('QHeaderView::section{background:skyblue}')

 #构建表格插入数据
 for i in range(row):
 for j in range(vol):
 temp_data = data[i][j] # 临时记录,不能直接插入表格
 data1 = QTableWidgetItem(str(temp_data)) # 转换后可插入表格
 self.MyTable.setItem(i, j, data1)


 #编辑按钮
 self.qle = QLineEdit()
 buttonBox = QDialogButtonBox()
 #增删查改四个按钮
 addButton = buttonBox.addButton("&ADD",QDialogButtonBox.ActionRole)
 okButton = buttonBox.addButton("&OK",QDialogButtonBox.ActionRole)
 deleteButton = buttonBox.addButton("&DELETE",QDialogButtonBox.ActionRole)
 inquireButton = buttonBox.addButton("&QUERY",QDialogButtonBox.ActionRole)

 #设置按钮内字体样式
 addButton.setFont(font)
 okButton.setFont(font)
 deleteButton.setFont(font)
 inquireButton.setFont(font)

 #垂直布局
 layout = QVBoxLayout()
 layout.addWidget(self.qle)
 layout.addWidget(buttonBox)
 layout.addWidget(self.MyTable)
 self.setLayout(layout)

 addButton.clicked.connect(partial(self.add_data,cur,db))#插入实现
 okButton.clicked.connect(partial(self.up_data, cur, db,col_lst))#插入实现
 deleteButton.clicked.connect(partial(self.del_data,cur,db))#删除实现
 inquireButton.clicked.connect(partial(self.inq_data,db))#查询实现

 #添加空表格
 def add_data(self,cur,db):
 #获取行数
 row = self.MyTable.rowCount()
 #在末尾插入一空行
 self.MyTable.insertRow(row)


 #插入数据
 def up_data(self,cur,db,col_lst):
 row_1 = self.MyTable.rowCount()

 value_lst = []
 for i in range(len(col_lst)):
 if(len(self.MyTable.item(row_1-1,i).text())==0):
 value_lst.append(None)
 else:
 value_lst.append(self.MyTable.item(row_1-1,i).text())

 tup_va_lst = []
 for cl,va in zip(col_lst,value_lst):
 tup_va_lst.append((cl,va))

 #插入语句
 cur.execute(
 "INSERT INTO pm_25 VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",value_lst)



 #删除
 def del_data(self,cur,db):
 #是否删除的对话框
 reply = QMessageBox.question(self, 'Message', 'Are you sure to delete it ?', QMessageBox.Yes | QMessageBox.No,
   QMessageBox.No)
 if reply == QMessageBox.Yes:
 #当前行
 row_2 = self.MyTable.currentRow()
 del_d = self.MyTable.item(row_2, 0).text()

 #在数据库删除数据
 cur.execute("DELETE FROM pm_25 WHERE f_id = '"+del_d+"'")
 db.commit()

 #删除表格
 self.MyTable.removeRow(row_2)

 #查询
 def inq_data(self,db):
 txt = self.qle.text()

 #模糊查询
 if len(txt) != 0:
 cur.execute("SELECT * FROM pm25_fn WHERE f_area LIKE '%"+txt+"%' or f_place LIKE '%"+txt+"%'")# CONCAT('f_id','f_area','f_place','f_AQI','f_AQItype','f_PM25per1h'),concat(concat('%','#txt'),'%')

 data_x = cur.fetchall()

 self.MyTable.clearContents()

 row_4 = len(data_x)
 vol_1 = len(cur.description)

 #查询到的更新带表格当中
 for i_x in range(row_4):
 for j_y in range(vol_1):
  temp_data_1 = data_x[i_x][j_y] # 临时记录,不能直接插入表格
  data_1 = QTableWidgetItem(str(temp_data_1)) # 转换后可插入表格
  self.MyTable.setItem(i_x, j_y, data_1)

 #空输入返回原先数据表格
 else:
 self.MyTable.clearContents()
 cur.execute("SELECT * FROM pm_25")
 data_y = cur.fetchall()

 row_5 = len(data_y)
 vol_1 = len(cur.description)

 for i_x_1 in range(row_5):
 for j_y_1 in range(vol_1):
  temp_data_2 = data_y[i_x_1][j_y_1] # 临时记录,不能直接插入表格
  data_2 = QTableWidgetItem(str(temp_data_2)) # 转换后可插入表格
  self.MyTable.setItem(i_x_1, j_y_1, data_2)

def main():
 #显示
 app = QApplication(sys.argv)

 c = creat_view()
 c.show()

 sys.exit(app.exec_())

main()

界面展示

大致就这么多啦,只要掌握PyQt的基本使用方法和数据库的基本语法,做起来还是比较得心应手的。

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。

您可能感兴趣的文档:

--结束END--

本文标题: Python+PyQt5+MySQL实现天气管理系统

本文链接: https://lsjlt.com/news/9635.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python+PyQt5+MySQL实现天气管理系统
    在本篇博客中,我利用Python语言其编写界面库PyQt5,然后通过连接MySQL数据库,实现了一个简单的天气管理小系统,该系统包含简单的增删查改四个主要功能。本文旨在解析实现的程序,能够让读者快速了解PyQt5图形...
    99+
    2022-05-21
    Python PyQt5 MySQL 天气管理系统
  • Python怎么实现天气预报系统
    这篇“Python怎么实现天气预报系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python怎么实现天气预报系统”文章吧...
    99+
    2023-07-04
  • Python实战之天气预报系统的实现
    目录前言一、前期准备二、代码展示三、效果展示前言 鼎鼎大名的南方城市长沙很早就入冬了,街上各种大衣,毛衣,棉衣齐齐出动。 这段时间全国各地大风呜呜地吹,很多地方断崖式降温。 虽然前几...
    99+
    2022-12-19
    Python天气预报系统 Python天气预报
  • python学生管理系统(pyqt5 含界面)
    学生管理系统项目流程 项目模块 账号登陆 人脸识别 增添学生信息 删除学生信息 改动学生信息 查询学生信息 项目主体框架 app.py为主代码,负责用于界面打开展示。img文件夹负责放置项目qrc的...
    99+
    2023-09-04
    python qt docker
  • Python+pytorch实现天气识别
    目录一、前期工作1.设置GPU或者cpu2.导入数据二、数据预处理三、搭建网络四、训练模型1.设置学习率2.模型训练五、模型评估1.Loss和Accuracy图2.对结果进行预测3....
    99+
    2024-04-02
  • python mysql实现学生成绩管理系统
    这学期在学python,感觉想写一个东西来巩固自己的基础,因为大二的时候我看过python,所以还是一共花了几个小时写了一个基于mysql的成绩管理系统,这个东西其实拿不出手,不过就...
    99+
    2024-04-02
  • Python实现天气查询软件
    目录一、背景二、工具三、代码解读四、完整代码一、背景 某天下班淋雨成了落汤鸡,发了个朋友圈感慨一下啊,然后...... 夜深人静之时,突然收到了来自学妹的Py文件,运行之后发现事情并...
    99+
    2024-04-02
  • python实现会员管理系统
    本文用python写了一个会员管理系统,供大家参考,具体内容如下: """ 后台管理员前台会员信息系统 1.后台管理员只有一个用户:admin 密码:admin 2.当管理员登陆成功...
    99+
    2024-04-02
  • Python实现仓库管理系统
    本文实例为大家分享了Python实现仓库管理系统的具体代码,供大家参考,具体内容如下 注意:在Linux环境运行 代码 #!/usr/bin/env python # -*- cod...
    99+
    2024-04-02
  • Python实现信息管理系统
    本文实例为大家分享了Python实现信息管理系统的具体代码,供大家参考,具体内容如下 """ 项目名称 = 'python' 文件名= '学生信息管理系统' 作者 = '向日葵' "...
    99+
    2024-04-02
  • python实现列车管理系统
    本文实例为大家分享了python实现列车管理系统的具体代码,供大家参考,具体内容如下 这学期学了python,结果学的还是很浅,然后就写了个简单的大作业,学习一下。这是个简单的操作系...
    99+
    2024-04-02
  • Java+mysql实现学籍管理系统
    本文实例为大家分享了Java+mysql实现学籍管理系统的具体代码,供大家参考,具体内容如下 一、myswql数据库表格 项目使用mysql数据库,有2张表格。一张用户表用于登录验证...
    99+
    2024-04-02
  • python操作mysql实现一个超市管理系统
    目录前言1.导入pymysql 模块 2.在python里连接mysql,并创建数据表   test1.py  2.1 连接数据库2.2 创建数据表,并输入数据 2.3 ...
    99+
    2022-12-22
    python超市管理系统 mysql超市管理系统
  • python实现通讯录管理系统
    本文实例为大家分享了python实现通讯录管理系统的具体代码,供大家参考,具体内容如下 题目 期末项目  一. 项目要求 利用函数实现通讯录管理系统,通讯录的内容包含姓名、...
    99+
    2024-04-02
  • python实现停车场管理系统
    目录一、需求二、代码2.1 初始化模块__init__.py2.2 主程序模块main.py2.3 停车管理模块ParkingManagementSystem.py2.4 车元素模块...
    99+
    2024-04-02
  • python怎么实现播报天气预报
    要实现播报天气预报,可以使用Python的语音合成库,如pyttsx3或gTTS。下面是使用pyttsx3库的示例代码:```pyt...
    99+
    2023-08-31
    python
  • layui+php+mysql后台管理系统,带实时聊天功能
    layui+php+mysql后台管理系统,带实时聊天功能 实现了动态修改导航菜单功能新建部门新建用户新建角色配置角色权限在线聊天沟通功能 登录页面  2.部门管理页面  3.用户管理页面  4.角色与权限管理页面 ...
    99+
    2023-09-06
    php layui javascript
  • python 管理系统实现mysql交互的示例代码
    没配置的可以看一下我上一篇 地址 开启小皮 数据库text 数据库表 student 字段 student_no name age sex 效果图如下 增 删 查 改 ...
    99+
    2024-04-02
  • python实现简易名片管理系统
    本文实例为大家分享了python实现名片管理系统的具体代码,供大家参考,具体内容如下 功能需求 用户输入数字选择要进行的操作 添加名片 删除名片 修...
    99+
    2024-04-02
  • 基于python实现图书管理系统
    本文实例为大家分享了python实现图书管理系统的具体代码,供大家参考,具体内容如下 添加新书 查询 借阅 二次添加新书(读取已有的.xls并修改) 代码: imp...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作