电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python+PyQt5+MySQL實現天氣管理系統

瀏覽:135日期:2022-07-21 09:09:17

在本篇博客中,我利用Python語言其編寫界面庫PyQt5,然后通過連接MySQL數據庫,實現了一個簡單的天氣管理小系統,該系統包含簡單的增刪查改四個主要功能。本文旨在解析實現的程序,能夠讓讀者快速了解PyQt5圖形界面庫,然后可以初步實現這樣一個小的系統程序。

PyQt5簡介

PyQt5本身來自C++的界面庫Qt,經過一系列的封裝移植到Python里面,作為Python的一個圖像界面庫,它繼承了Python語言簡單易實現的特點,可以實現基本的界面效果。里面有許多類實現了我們想要的窗體、表格、文本、圖像等功能。在這個項目中也有所涉及,博主也是初次學這個庫,然后寫了這個小項目,里面可能會有一些不合適的地方,望諒解。

天氣系統數據庫

我將天氣系統數據存入MySQL數據庫中,提取數據時用Python的pymysql庫連接MySQL數據庫,對數據庫進行一系列操作。

這個數據庫主要包含城市、時間、各個空氣物質的含量、pm2.5、AQI指標等。如果需要數據可以在下面留言,我可以發給你們。

Python+PyQt5+MySQL實現天氣管理系統

實現步驟

導入所需要用的Python包:PyQt5,pymysql……沒有的可以直接用pip安裝 創建所要編寫的界面類,初始化界面 連接數據庫,獲取數據 建立表格、按鈕布局 實現功能函數 測試

具體實現過程

#導入包import pymysqlfrom functools import partialfrom PyQt5.Qt import QWidgetfrom PyQt5 import QtGui,QtWidgetsfrom PyQt5.QtCore import Qtfrom 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()

界面展示

Python+PyQt5+MySQL實現天氣管理系統

大致就這么多啦,只要掌握PyQt的基本使用方法和數據庫的基本語法,做起來還是比較得心應手的。

更多學習資料請關注專題《管理系統開發》。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 校车_校车价格_19座幼儿园校车_幼儿园校车_大鼻子校车 | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | DAIKIN电磁阀-意大利ATOS电磁阀-上海乾拓贸易有限公司 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | 移动厕所租赁|移动卫生间|上海移动厕所租赁-家瑞租赁 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 掺铥光纤放大器-C/L波段光纤放大器-小信号光纤放大器-合肥脉锐光电技术有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 水轮机密封网 | 水轮机密封产品研发生产厂家 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 沈阳网站建设_沈阳网站制作_沈阳网页设计-做网站就找示剑新零售 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 慢回弹测试仪-落球回弹测试仪-北京冠测精电仪器设备有限公司 | 圆周直径尺-小孔内视镜-纤维研磨刷-东莞市高腾达精密工具 | 事迹材料_个人事迹名人励志故事 学生作文网_中小学生作文大全与写作指导 | 北京亦庄厂房出租_经开区产业园招商信息平台 | 脱硫搅拌器厂家-淄博友胜不锈钢搅拌器厂家 | 卫生型双针压力表-高温防腐差压表-安徽康泰电气有限公司 | 北京普辉律师事务所官网_北京律师24小时免费咨询|法律咨询 | 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 盘式曝气器-微孔曝气器-管式曝气器-曝气盘-斜管填料 | 郑州市前程水处理有限公司 | 罐体电伴热工程-消防管道电伴热带厂家-山东沃安电气 | 冷热冲击试验箱_温度冲击试验箱价格_冷热冲击箱排名_林频厂家 | 造价工程师网,考试时间查询,报名入口信息-网站首页 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 深圳APP开发公司_软件APP定制开发/外包制作-红匣子科技 | 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 | 塑料瓶罐_食品塑料瓶_保健品塑料瓶_调味品塑料瓶–东莞市富慷塑料制品有限公司 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰| FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | 高尔夫球杆_高尔夫果岭_高尔夫用品-深圳市新高品体育用品有限公司 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 |