国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python+PyQt5+MySQL實(shí)現(xiàn)天氣管理系統(tǒng)

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

2020-06-17 11:02Reclusiveman Python

這篇文章主要為大家詳細(xì)介紹了Python+PyQt5+MySQL實(shí)現(xiàn)天氣管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

PyQt5簡(jiǎn)介

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

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

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

這個(gè)數(shù)據(jù)庫(kù)主要包含城市、時(shí)間、各個(gè)空氣物質(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……沒(méi)有的可以直接用pip安裝
  • 創(chuàng)建所要編寫的界面類,初始化界面
  • 連接數(shù)據(jù)庫(kù),獲取數(shù)據(jù)
  • 建立表格、按鈕布局
  • 實(shí)現(xiàn)功能函數(shù)
  • 測(cè)試

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#導(dǎo)入包
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)
 
 #設(shè)置界面大小、名稱、背景
 self.resize(1000,800)
 self.setWindowTitle('Database')
 self.setStyleSheet("background-image:url(tubiao_meitu.jpg)")
 
 #窗體屬性
 self.setWindowFlags(Qt.Widget)
 
 
 #連接數(shù)據(jù)庫(kù)
 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è)置豎直方向表頭不可見(jiàn)
 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] # 臨時(shí)記錄,不能直接插入表格
  data1 = QTableWidgetItem(str(temp_data)) # 轉(zhuǎn)換后可插入表格
  self.MyTable.setItem(i, j, data1)
 
 
 #編輯按鈕
 self.qle = QLineEdit()
 buttonBox = QDialogButtonBox()
 #增刪查改四個(gè)按鈕
 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))
 
 #插入語(yǔ)句
 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):
 #是否刪除的對(duì)話框
 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ù)庫(kù)刪除數(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] # 臨時(shí)記錄,不能直接插入表格
   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] # 臨時(shí)記錄,不能直接插入表格
   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ù)庫(kù)的基本語(yǔ)法,做起來(lái)還是比較得心應(yīng)手的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/qq_40707407/article/details/81814482

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: av7777| 亚洲在线 | 午夜午夜精品一区二区三区文 | 精品视频网站 | 久久久国产一级 | 成人黄色短视频在线观看 | 91在线视频播放 | 国产在线精品一区二区三区 | av黄色在线 | 欧美日韩在线视频观看 | 这里只有精品视频 | 狠狠搞狠狠操 | 91在线免费视频 | 国产美女在线观看 | 国产999精品久久久影片官网 | 北条麻妃在线一区二区免费播放 | 国产伦乱 | 国产精品99久久久久久宅男 | 国产一区二区三区久久久久久久久 | 免费日韩精品 | 成人片免费看 | 一本黄色片| 中文字幕日韩在线 | 亚洲欧美激情精品一区二区 | 成人欧美一区二区三区在线播放 | 日韩中文字幕在线视频 | 在线观看a毛片 | 亚洲av毛片一区二二区三三区 | 国产精品免费久久久久久久久久中文 | 欧美xxxx黑人又粗又长 | 日本三级精品视频 | 91精品久久久久久久久久久久久久久 | 国产亚洲一区二区三区在线观看 | 另类久久| 国产精品久久久久久久久久大牛 | 欧美在线视频一区二区 | 久久精品国产亚洲一区二区三区 | 欧美精品一二三区 | 蜜臀久久精品99国产精品日本 | 亚洲精品欧美一区二区三区 | 久久69精品久久久久久国产越南 |