通過這個布局思路來做一個簡單的后臺管理系統(tǒng)也是OK的,大家可以參考一下啦!
站在用戶的角度思考問題,與客戶深入溝通,找到石獅網(wǎng)站設計與石獅網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、雅安服務器托管、企業(yè)郵箱。業(yè)務覆蓋石獅地區(qū)。
【閱讀全文】
話不多說,還是先來梳理一下需要的第三方模塊。
PyQ5 的UI界面布局部分,同樣是還是使用這三個模塊就夠了。
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
將sys模塊導入到代碼塊中,用于main函數(shù)里面的主體循環(huán)時使用。
import sys
add_dialog是一個自己寫的添加數(shù)據(jù)的彈框。
from add_dialog import AddDialog
創(chuàng)建好DataManage類,主要用來實現(xiàn)主窗口頁面的UI布局。
class DataManage(QWidget):
def __init__(self):
super(DataManage, self).__init__()
self.data_list = []
self.init_ui()
def init_ui(self):
'''全局設置'''
self.setWindowIcon(QIcon('數(shù)據(jù).ico'))
self.setWindowTitle('數(shù)據(jù)管理器')
self.resize(550, 400)
grid = QGridLayout()
'''菜單設置'''
self.add_btn = QPushButton()
self.add_btn.setText('添加數(shù)據(jù)')
self.add_btn.clicked.connect(self.add_btn_click)
self.del_btn = QPushButton()
self.del_btn.setText('刪除數(shù)據(jù)')
self.del_btn.clicked.connect(self.del_data_row)
self.query_btn = QPushButton()
self.query_btn.setText('查詢')
self.query_btn.clicked.connect(self.query_data_list)
'''數(shù)據(jù)列表設置'''
self.data_table = QTableWidget()
COLUMN = 5
ROW = 0
self.data_table.setColumnCount(COLUMN)
self.data_table.setRowCount(ROW)
h_table_header = ['序號', '姓名', '年齡', '班級', '表現(xiàn)']
self.data_table.setHorizontalHeaderLabels(h_table_header)
self.data_table.verticalHeader().setVisible(False)
self.data_table.setShowGrid(True)
self.data_table.setEditTriggers(QTableWidget.NoEditTriggers)
self.data_table.setSelectionBehavior(QTableWidget.SelectRows)
self.data_table.setSelectionMode(QTableWidget.SingleSelection)
for index in range(self.data_table.columnCount()):
headItem = self.data_table.horizontalHeaderItem(index)
headItem.setTextAlignment(Qt.AlignVCenter)
'''加入布局'''
grid.addWidget(self.add_btn, 0, 0, 1, 1)
grid.addWidget(self.del_btn, 0, 1, 1, 1)
grid.addWidget(self.query_btn, 0, 2, 1, 1)
grid.addWidget(self.data_table, 1, 0, 1, 3)
self.setLayout(grid)
定義需要的槽函數(shù),通過不同按鈕的信號綁定相應的槽函數(shù)從而來實現(xiàn)該按鈕需要綁定的事件來實現(xiàn)業(yè)務邏輯。
# 將新增數(shù)據(jù)的按鈕綁定到該槽函數(shù)
def add_btn_click(self):
'''
打開新增數(shù)據(jù)的彈框模塊
:return:
'''
AddDialog.get_add_dialog(self)
# 將查詢數(shù)據(jù)的按鈕綁定到該槽函數(shù)
def query_data_list(self):
'''
查詢數(shù)據(jù)、并將數(shù)據(jù)展示到主窗口的數(shù)據(jù)列表中
:return:
'''
data = self.data_list
if len(data) != 0 and len(data[0]) != 0:
self.data_table.setRowCount(len(data))
self.data_table.setColumnCount(len(data[0]))
for i in range(len(data)):
for j in range(len(data[0])):
self.data_table.setItem(i, j, QTableWidgetItem(str(data[i][j])))
# 將刪除數(shù)據(jù)按鈕綁定到該槽函數(shù)
def del_data_row(self):
'''
刪除某一行的數(shù)據(jù)信息
:return:
'''
row_select = self.data_table.selectedItems()
print(row_select)
if len(row_select) != 0:
row = row_select[0].row()
print(row)
self.data_table.removeRow(row)
del self.data_list[row]
print(self.data_table)
通過 main() 函數(shù)來啟動整個應用程序。
if __name__ == '__main__':
app = QApplication(sys.argv)
main = DataManage()
main.show()
sys.exit(app.exec_())
最后,將新增數(shù)據(jù)時自定義的彈框模塊的代碼分享一下。這個模塊就是為了自定彈框單獨寫的一個模塊,通過在主窗口直接調(diào)用該模塊實現(xiàn)的彈框函數(shù)就能實現(xiàn)一個彈框的功能。
創(chuàng)建一個 add_dialog.py 的文件,將下面的代碼塊放到里面即可。
from PyQt5.QtWidgets import *
class AddDialog(QDialog):
def __init__(self, parent=None):
super(AddDialog, self).__init__(parent)
self.init_ui(parent)
def init_ui(self,parent):
'''水平布局'''
hbox = QHBoxLayout()
self.save_btn = QPushButton()
self.save_btn.setText('保存')
self.save_btn.clicked.connect(lambda :self.save_btn_click(parent))
self.cancel_btn = QPushButton()
self.cancel_btn.setText('取消')
self.cancel_btn.clicked.connect(self.cancel_btn_click)
hbox.addWidget(self.save_btn)
hbox.addWidget(self.cancel_btn)
'''表單布局'''
fbox = QFormLayout()
self.seq_lab = QLabel()
self.seq_lab.setText('序號:')
self.seq_text = QLineEdit()
self.seq_text.setPlaceholderText('請輸入序號')
self.name_lab = QLabel()
self.name_lab.setText('姓名:')
self.name_text = QLineEdit()
self.name_text.setPlaceholderText('請輸入姓名')
self.age_lab = QLabel()
self.age_lab.setText('年齡:')
self.age_text = QLineEdit()
self.age_text.setPlaceholderText('請輸入年齡')
self.class_lab = QLabel()
self.class_lab.setText('班級:')
self.class_text = QLineEdit()
self.class_text.setPlaceholderText('請輸入班級')
self.socre_lab = QLabel()
self.socre_lab.setText('表現(xiàn):')
self.socre_text = QLineEdit()
self.socre_text.setPlaceholderText('請輸入表現(xiàn)')
fbox.addRow(self.seq_lab,self.seq_text)
fbox.addRow(self.name_lab, self.name_text)
fbox.addRow(self.age_lab, self.age_text)
fbox.addRow(self.class_lab, self.class_text)
fbox.addRow(self.socre_lab, self.socre_text)
vbox = QVBoxLayout()
vbox.addLayout(fbox)
vbox.addLayout(hbox)
self.setLayout(vbox)
def save_btn_click(self,parent):
if self.seq_text.text().strip() != '' and self.name_text.text().strip() != '' \
and self.age_text.text().strip() != ''and self.class_text.text().strip() != '' \
and self.socre_text.text().strip() != '' :
print(parent.data_list)
data = [self.seq_text.text(),
self.name_text.text(),
self.age_text.text(),
self.class_text.text(),
self.socre_text.text()]
parent.data_list.append(data)
print(parent.data_list)
parent.query_data_list()
self.close()
def cancel_btn_click(self):
self.close()
@staticmethod
def get_add_dialog(parent=None):
dialog = AddDialog(parent)
return dialog.exec()
以上就是實現(xiàn)一個數(shù)據(jù)管理器需要的主要代碼塊了,如果有更好的方式或者疑問,歡迎在評論區(qū)留言討論 ~
【往期精彩】
介紹一個文本語音神器,幾行代碼就能搞定!
python批量自動整理文件
初學者福利:分享五個免費的 Python 學習網(wǎng)站,抓緊收藏吧!
有趣的控制臺玩法:一行代碼繪制控制臺圖像!
數(shù)據(jù)處理小工具:Excel 批量數(shù)據(jù)文件拆分/整合器...
辦公自動化:PDF文件合并器,將多個PDF文件進行合并...
GUI猜數(shù)字游戲,直接開玩...
手把手教你做一個數(shù)據(jù)圖表生成器(附源碼)...
動態(tài)指針時鐘:利用pyqt5制作指針鐘表顯示實時時間
python 日志中最亮的仔,是喜歡的花里胡哨吖...
哈撒給,英雄聯(lián)盟全皮膚下載器來了...
剛剛出爐的冬奧會吉祥物:冰墩墩,附源碼...
網(wǎng)頁題目:該怎么用pyqt5來實現(xiàn)數(shù)據(jù)的增、刪、改、查功能...
本文網(wǎng)址:http://chinadenli.net/article46/dsoghhg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、用戶體驗、網(wǎng)站改版、搜索引擎優(yōu)化、建站公司、營銷型網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)