該怎么用pyqt5來實現數據的增、刪、改、查功能...

通過這個布局思路來做一個簡單的后臺管理系統也是OK的,大家可以參考一下啦!

站在用戶的角度思考問題,與客戶深入溝通,找到石獅網站設計與石獅網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都網站建設、成都做網站、企業官網、英文網站、手機端網站、網站推廣、域名與空間、雅安服務器托管、企業郵箱。業務覆蓋石獅地區。

【閱讀全文】

話不多說,還是先來梳理一下需要的第三方模塊。

PyQ5 的UI界面布局部分,同樣是還是使用這三個模塊就夠了。

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

將sys模塊導入到代碼塊中,用于main函數里面的主體循環時使用。

import sys

add_dialog是一個自己寫的添加數據的彈框。

from add_dialog import AddDialog

創建好DataManage類,主要用來實現主窗口頁面的UI布局。

class DataManage(QWidget):
    def __init__(self):
        super(DataManage, self).__init__()
        self.data_list = []
        self.init_ui()

    def init_ui(self):
        '''全局設置'''

        self.setWindowIcon(QIcon('數據.ico'))
        self.setWindowTitle('數據管理器')
        self.resize(550, 400)
        grid = QGridLayout()

        '''菜單設置'''

        self.add_btn = QPushButton()
        self.add_btn.setText('添加數據')
        self.add_btn.clicked.connect(self.add_btn_click)

        self.del_btn = QPushButton()
        self.del_btn.setText('刪除數據')
        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)

        '''數據列表設置'''

        self.data_table = QTableWidget()
        COLUMN = 5
        ROW = 0
        self.data_table.setColumnCount(COLUMN)
        self.data_table.setRowCount(ROW)
        h_table_header = ['序號', '姓名', '年齡', '班級', '表現']
        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)

定義需要的槽函數,通過不同按鈕的信號綁定相應的槽函數從而來實現該按鈕需要綁定的事件來實現業務邏輯。

# 將新增數據的按鈕綁定到該槽函數
    def add_btn_click(self):
        '''
        打開新增數據的彈框模塊
        :return:
        '''
        AddDialog.get_add_dialog(self)

    # 將查詢數據的按鈕綁定到該槽函數
    def query_data_list(self):
        '''
        查詢數據、并將數據展示到主窗口的數據列表中
        :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])))

    # 將刪除數據按鈕綁定到該槽函數
    def del_data_row(self):
        '''
        刪除某一行的數據信息
        :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() 函數來啟動整個應用程序。

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = DataManage()
    main.show()
    sys.exit(app.exec_())

最后,將新增數據時自定義的彈框模塊的代碼分享一下。這個模塊就是為了自定彈框單獨寫的一個模塊,通過在主窗口直接調用該模塊實現的彈框函數就能實現一個彈框的功能。

創建一個 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('表現:')
        self.socre_text = QLineEdit()
        self.socre_text.setPlaceholderText('請輸入表現')

        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()

以上就是實現一個數據管理器需要的主要代碼塊了,如果有更好的方式或者疑問,歡迎在評論區留言討論 ~

【往期精彩】

介紹一個文本語音神器,幾行代碼就能搞定!

python批量自動整理文件

初學者福利:分享五個免費的 Python 學習網站,抓緊收藏吧!

有趣的控制臺玩法:一行代碼繪制控制臺圖像!

數據處理小工具:Excel 批量數據文件拆分/整合器...

辦公自動化:PDF文件合并器,將多個PDF文件進行合并...

GUI猜數字游戲,直接開玩...

手把手教你做一個數據圖表生成器(附源碼)...

動態指針時鐘:利用pyqt5制作指針鐘表顯示實時時間

python 日志中最亮的仔,是喜歡的花里胡哨吖...

哈撒給,英雄聯盟全皮膚下載器來了...

剛剛出爐的冬奧會吉祥物:冰墩墩,附源碼...

網頁題目:該怎么用pyqt5來實現數據的增、刪、改、查功能...
本文網址:http://m.kartarina.com/article46/dsoghhg.html

成都網站建設公司_創新互聯,為您提供外貿網站建設用戶體驗、網站改版搜索引擎優化建站公司營銷型網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站托管運營
主站蜘蛛池模板: 免费一区二区无码东京热| 国内精品久久久久久无码不卡| 国产精品亚洲а∨无码播放不卡 | 日本爆乳j罩杯无码视频| 精品少妇人妻av无码专区| 亚洲国产成人精品无码区在线观看| 无码精品一区二区三区免费视频 | 国产精品无码一区二区在线观| 亚洲精品国产日韩无码AV永久免费网 | 777爽死你无码免费看一二区| 国产精品亚洲专区无码唯爱网| 一本色道久久HEZYO无码| 亚州AV综合色区无码一区| 大桥久未无码吹潮在线观看 | 亚洲私人无码综合久久网| 中文字幕无码av激情不卡| 好了av第四综合无码久久| 日韩一区二区三区无码影院| 本免费AV无码专区一区| 国产嫖妓一区二区三区无码| 亚洲av午夜国产精品无码中文字| 在线观看片免费人成视频无码 | 国产精品无码免费专区午夜| 久久精品国产亚洲AV无码麻豆| 成人无码视频97免费| 人妻少妇无码视频在线| 无码福利写真片视频在线播放| 无码人妻一区二区三区在线视频| 国产亚洲美日韩AV中文字幕无码成人| 亚洲av无码专区在线电影天堂 | 精品无码国产一区二区三区51安| 久久久久亚洲AV成人无码网站| 国产AV无码专区亚洲AV手机麻豆 | 免费无码国产在线观国内自拍中文字幕 | 小泽玛丽无码视频一区| 亚洲AV无码一区二区三区国产| 精品久久久无码中字| 欧日韩国产无码专区| 成在人线av无码免费高潮水 | 久久国产精品无码网站| 久久伊人亚洲AV无码网站|