日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python+PyQt5+MySQL實(shí)現(xiàn)天氣管理系統(tǒng)

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

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

PyQt5簡介

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

天氣系統(tǒng)數(shù)據(jù)庫

我將天氣系統(tǒng)數(shù)據(jù)存入MySQL數(shù)據(jù)庫中,提取數(shù)據(jù)時用Python的pymysql庫連接MySQL數(shù)據(jù)庫,對數(shù)據(jù)庫進(jìn)行一系列操作。

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

Python+PyQt5+MySQL實(shí)現(xiàn)天氣管理系統(tǒng)

實(shí)現(xiàn)步驟

導(dǎo)入所需要用的Python包:PyQt5,pymysql……沒有的可以直接用pip安裝 創(chuàng)建所要編寫的界面類,初始化界面 連接數(shù)據(jù)庫,獲取數(shù)據(jù) 建立表格、按鈕布局 實(shí)現(xiàn)功能函數(shù) 測試

具體實(shí)現(xiàn)過程

#導(dǎo)入包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) #設(shè)置界面大小、名稱、背景 self.resize(1000,800) self.setWindowTitle(’Database’) self.setStyleSheet('background-image:url(tubiao_meitu.jpg)') #窗體屬性 self.setWindowFlags(Qt.Widget) #連接數(shù)據(jù)庫 db = pymysql.connect('localhost', 'root', 'password', 'mysql',charset=’utf8’) #獲取游標(biāo)、數(shù)據(jù) cur = db.cursor() cur.execute('SELECT * FROM pm_25') data = cur.fetchall() #數(shù)據(jù)列名 col_lst = [tup[0] for tup in cur.description] #數(shù)據(jù)的大小 row = len(data) vol = len(data[0]) #插入表格 self.MyTable = QTableWidget(row,vol) font = QtGui.QFont(’微軟雅黑’,10) #設(shè)置字體、表頭 self.MyTable.horizontalHeader().setFont(font) self.MyTable.setHorizontalHeaderLabels(col_lst) #設(shè)置豎直方向表頭不可見 self.MyTable.verticalHeader().setVisible(False) self.MyTable.setFrameShape(QFrame.NoFrame)#設(shè)置表格顏色 self.MyTable.horizontalHeader().setStyleSheet(’QHeaderView::section{background:skyblue}’) #構(gòu)建表格插入數(shù)據(jù) for i in range(row): for j in range(vol): temp_data = data[i][j] # 臨時記錄,不能直接插入表格 data1 = QTableWidgetItem(str(temp_data)) # 轉(zhuǎn)換后可插入表格 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) #設(shè)置按鈕內(nèi)字體樣式 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))#插入實(shí)現(xiàn) okButton.clicked.connect(partial(self.up_data, cur, db,col_lst))#插入實(shí)現(xiàn) deleteButton.clicked.connect(partial(self.del_data,cur,db))#刪除實(shí)現(xiàn) inquireButton.clicked.connect(partial(self.inq_data,db))#查詢實(shí)現(xiàn) #添加空表格 def add_data(self,cur,db): #獲取行數(shù) row = self.MyTable.rowCount() #在末尾插入一空行 self.MyTable.insertRow(row) #插入數(shù)據(jù) 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: #當(dāng)前行 row_2 = self.MyTable.currentRow() del_d = self.MyTable.item(row_2, 0).text() #在數(shù)據(jù)庫刪除數(shù)據(jù) 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) #查詢到的更新帶表格當(dāng)中 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)) # 轉(zhuǎn)換后可插入表格 self.MyTable.setItem(i_x, j_y, data_1) #空輸入返回原先數(shù)據(jù)表格 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)) # 轉(zhuǎn)換后可插入表格 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實(shí)現(xiàn)天氣管理系統(tǒng)

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

更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产亚洲观看| 国产福利亚洲| 视频在线在亚洲| 97欧美在线视频| 国产极品模特精品一二| 亚洲欧美在线综合| 婷婷激情一区| 欧美韩一区二区| 国产精品hd| 国产精品www994| 国产精品一区二区中文字幕| 亚洲精品进入| 日韩国产高清在线| 在线精品视频一区| 伊人久久大香伊蕉在人线观看热v| 亚洲va中文在线播放免费| 国产精品天天看天天狠| 日韩中文字幕1| 欧美专区18| 亚洲一区久久| 亚洲在线电影| 欧美日韩激情在线一区二区三区| 精品国产乱码久久久| 久久精品日韩欧美| 国产一区二区三区久久久久久久久| 久久的色偷偷| 精品72久久久久中文字幕| 麻豆成人综合网| 久久精品三级| 成人啊v在线| 悠悠资源网久久精品| 亚洲一区区二区| 日韩在线卡一卡二| 麻豆91精品| 日韩精品一区二区三区av | 久久电影一区| 日韩中文字幕1| 久久国产精品免费一区二区三区| 国产精品极品| 裤袜国产欧美精品一区| 99久久九九| 久久99伊人| 国产欧美日韩一区二区三区四区| 精品久久一区| 午夜精品影院| 亚洲精品四区| 国产欧美一区二区精品久久久| 精品国产午夜肉伦伦影院| 精品三区视频| 97国产精品| 国产精品美女| 欧美在线精品一区| 在线看片国产福利你懂的| 不卡中文一二三区| 91亚洲精品在看在线观看高清| 精品日韩一区| 欧美日韩精品一本二本三本 | 欧洲精品一区二区三区| 爽好多水快深点欧美视频| 欧美精品福利| 欧美日韩精品一区二区视频| 日韩亚洲在线| 国产精品香蕉| 欧美特黄a级高清免费大片a级| 水蜜桃久久夜色精品一区的特点| 欧美日本三区| 青青久久av| 欧美亚洲免费| 亚洲成人免费| 国产精品久久久久77777丨| 精品一区在线| 精品国产网站| 日韩精品91亚洲二区在线观看| 日韩不卡在线| 亚洲开心激情| 肉色欧美久久久久久久免费看 | 国产精品一区二区精品视频观看| 久久精品播放| 清纯唯美亚洲综合一区| 日韩专区视频网站| 神马日本精品| 日韩欧美中文字幕在线视频| 黄色在线网站噜噜噜| 亚洲ab电影| 1024精品一区二区三区| 免费一级欧美在线观看视频| 在线综合亚洲| 日韩精品专区| 日韩国产一区二| 伊人影院久久| 日韩欧美午夜| 国产精品久久国产愉拍| 蜜桃一区二区三区在线| 久久久夜夜夜| 麻豆91小视频| 日韩欧美在线精品| 成人看片网站| 免费视频一区二区三区在线观看| 亚洲视频www| 一区二区精品伦理...| 欧美日韩一区二区国产| 美女精品在线观看| 美女网站一区| 国产乱码精品一区二区亚洲| 亚洲网址在线观看| 99精品99| 欧美搞黄网站| 久久精品在线| 久久久久久色 | 97精品视频在线看| 天堂久久一区| 性色一区二区| 1024精品一区二区三区| 国产一区二区三区国产精品| 日韩高清不卡一区| 日本不卡高清视频| 日本一区福利在线| 久久精选视频| 波多野结衣久久精品| 福利一区二区三区视频在线观看| 国产精品一卡| 国产精品极品| 精品视频免费| 精品中文在线| 精品国产乱码久久久| 国产免费av一区二区三区| 亚洲理论在线| 免费成人av在线播放| 热久久久久久久| 99在线精品免费视频九九视| 欧美不卡高清一区二区三区| 最新中文字幕在线播放| 精品国产午夜肉伦伦影院| 精品国产精品国产偷麻豆| 精品亚洲自拍| 精品视频一区二区三区四区五区| 精品久久免费| 午夜精品成人av| 久久精品官网| 亚洲一级黄色| 亚洲午夜在线| 欧美日韩精品免费观看视频完整| 在线亚洲欧美| 日本不卡的三区四区五区| 国产欧美日韩影院| 成人亚洲精品| 欧美不卡视频| 日韩一区二区三区在线看| 欧美日本一区| 久久影院一区二区三区| 日韩av片子| 婷婷精品进入| 日韩精品欧美精品| 免费亚洲婷婷| 久久免费黄色| 欧美午夜精彩| 亚洲欧美日韩国产一区二区| 亚洲男人在线| 精品网站999| 在线 亚洲欧美在线综合一区| 亚洲精品亚洲人成在线观看| 国产精品免费大片| 电影亚洲精品噜噜在线观看| 亚洲少妇自拍| 国产精品宾馆| 欧美日韩第一| 美女精品久久| 日韩欧美四区| 中文久久精品| 久久国产免费| 精品亚洲成人| 青草综合视频| 免费在线视频一区| 亚洲网站视频| 免费高潮视频95在线观看网站| 欧美国产亚洲精品| 日本欧美大码aⅴ在线播放| 日韩一区二区久久| 91精品国产调教在线观看| 精品久久不卡| 国产精品红桃| 国产精品一区二区美女视频免费看| 日韩精品一二三区| 中文国产一区| japanese国产精品| 久久久久91| 日韩在线不卡| 日韩一区欧美| 麻豆视频在线看| 国产成年精品| 国产成人精品三级高清久久91 | 日韩不卡一区二区三区| 亚洲一区二区三区无吗| 中文亚洲免费| 亚洲作爱视频| 久久午夜精品一区二区| 午夜电影亚洲| 在线视频精品| 美女网站久久| 日本大胆欧美人术艺术动态|