最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyQt5實(shí)現(xiàn)數(shù)據(jù)的增刪改查功能詳解

 更新時(shí)間:2022年03月18日 08:27:36   作者:Python 集中營(yíng)  
這篇文章主要為大家介紹了如何使用Python中的PyQt5模塊來(lái)實(shí)現(xiàn)數(shù)據(jù)的增、刪、改、查功能,文中示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

通過(guò)這個(gè)布局思路來(lái)做一個(gè)簡(jiǎn)單的后臺(tái)管理系統(tǒng)也是OK的,大家可以參考一下啦!

話(huà)不多說(shuō),還是先來(lái)梳理一下需要的第三方模塊。

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

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

將sys模塊導(dǎo)入到代碼塊中,用于main函數(shù)里面的主體循環(huán)時(shí)使用。

import sys

add_dialog是一個(gè)自己寫(xiě)的添加數(shù)據(jù)的彈框。

from add_dialog import AddDialog

創(chuàng)建好DataManage類(lèi),主要用來(lái)實(shí)現(xiàn)主窗口頁(yè)面的UI布局。

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

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

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

        '''菜單設(shè)置'''

        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('查詢(xún)')
        self.query_btn.clicked.connect(self.query_data_list)

        '''數(shù)據(jù)列表設(shè)置'''

        self.data_table = QTableWidget()
        COLUMN = 5
        ROW = 0
        self.data_table.setColumnCount(COLUMN)
        self.data_table.setRowCount(ROW)
        h_table_header = ['序號(hào)', '姓名', '年齡', '班級(jí)', '表現(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ù),通過(guò)不同按鈕的信號(hào)綁定相應(yīng)的槽函數(shù)從而來(lái)實(shí)現(xiàn)該按鈕需要綁定的事件來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯。

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

    # 將查詢(xún)數(shù)據(jù)的按鈕綁定到該槽函數(shù)
    def query_data_list(self):
        '''
        查詢(xún)數(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)

通過(guò) main() 函數(shù)來(lái)啟動(dòng)整個(gè)應(yīng)用程序。

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

最后,將新增數(shù)據(jù)時(shí)自定義的彈框模塊的代碼分享一下。這個(gè)模塊就是為了自定彈框單獨(dú)寫(xiě)的一個(gè)模塊,通過(guò)在主窗口直接調(diào)用該模塊實(shí)現(xiàn)的彈框函數(shù)就能實(shí)現(xiàn)一個(gè)彈框的功能。

創(chuàng)建一個(gè) 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('序號(hào):')
        self.seq_text = QLineEdit()
        self.seq_text.setPlaceholderText('請(qǐng)輸入序號(hào)')

        self.name_lab = QLabel()
        self.name_lab.setText('姓名:')
        self.name_text = QLineEdit()
        self.name_text.setPlaceholderText('請(qǐng)輸入姓名')

        self.age_lab = QLabel()
        self.age_lab.setText('年齡:')
        self.age_text = QLineEdit()
        self.age_text.setPlaceholderText('請(qǐng)輸入年齡')

        self.class_lab = QLabel()
        self.class_lab.setText('班級(jí):')
        self.class_text = QLineEdit()
        self.class_text.setPlaceholderText('請(qǐng)輸入班級(jí)')

        self.socre_lab = QLabel()
        self.socre_lab.setText('表現(xiàn):')
        self.socre_text = QLineEdit()
        self.socre_text.setPlaceholderText('請(qǐng)輸入表現(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()

以上就是實(shí)現(xiàn)一個(gè)數(shù)據(jù)管理器需要的主要代碼塊了

到此這篇關(guān)于PyQt5實(shí)現(xiàn)數(shù)據(jù)的增刪改查功能詳解的文章就介紹到這了,更多相關(guān)PyQt5數(shù)據(jù)增刪改查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python?隨機(jī)生成emoji表情的方法實(shí)現(xiàn)

    python?隨機(jī)生成emoji表情的方法實(shí)現(xiàn)

    本文主要介紹了python?隨機(jī)生成emoji表情的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • Python實(shí)現(xiàn)爬蟲(chóng)從網(wǎng)絡(luò)上下載文檔的實(shí)例代碼

    Python實(shí)現(xiàn)爬蟲(chóng)從網(wǎng)絡(luò)上下載文檔的實(shí)例代碼

    小編最近在研究python,接觸到了爬蟲(chóng),本文給大家?guī)?lái)了Python實(shí)現(xiàn)爬蟲(chóng)從網(wǎng)絡(luò)上下載文檔的知識(shí)。下面小編把具體實(shí)例代碼分享到腳本之家平臺(tái),感興趣的朋友參考下吧
    2018-06-06
  • 基于python select.select模塊通信的實(shí)例講解

    基于python select.select模塊通信的實(shí)例講解

    下面小編就為大家?guī)?lái)一篇基于python select.select模塊通信的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 利用Python編寫(xiě)簡(jiǎn)易版德州撲克小游戲

    利用Python編寫(xiě)簡(jiǎn)易版德州撲克小游戲

    德州撲克不知道大家是否玩過(guò),它是起源于美國(guó)的得克薩斯州的一種博弈類(lèi)卡牌游戲,英文名叫做Texas?Hold’em?Poker。本文將用Python實(shí)現(xiàn)這一游戲,需要的可以參考一下
    2022-03-03
  • 實(shí)現(xiàn)?Python?腳本生成命令行

    實(shí)現(xiàn)?Python?腳本生成命令行

    這篇文章主要介紹了實(shí)現(xiàn)?Python?腳本生成命令行,文章通過(guò)定義一個(gè)?scrape?方法展開(kāi)詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Python淘寶秒殺的腳本實(shí)現(xiàn)

    Python淘寶秒殺的腳本實(shí)現(xiàn)

    這篇文章主要介紹了Python淘寶秒殺的腳本實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 利用Python將list列表寫(xiě)入文件并讀取的方法匯總

    利用Python將list列表寫(xiě)入文件并讀取的方法匯總

    因?yàn)閷?shí)驗(yàn)需要,實(shí)現(xiàn)了一下寫(xiě)入txt文件,下面這篇文章主要給大家介紹了關(guān)于如何利用Python將list列表寫(xiě)入文件并讀取的幾種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • python編寫(xiě)根據(jù)年份判斷生肖實(shí)例

    python編寫(xiě)根據(jù)年份判斷生肖實(shí)例

    這篇文章主要為大家介紹了python編寫(xiě)根據(jù)年份判斷生肖實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 判斷Threading.start新線(xiàn)程是否執(zhí)行完畢的實(shí)例

    判斷Threading.start新線(xiàn)程是否執(zhí)行完畢的實(shí)例

    這篇文章主要介紹了判斷Threading.start新線(xiàn)程是否執(zhí)行完畢的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • 一文詳解Python中哈希表的使用

    一文詳解Python中哈希表的使用

    哈希表或稱(chēng)為散列表,是一種常見(jiàn)的、使用頻率非常高的數(shù)據(jù)存儲(chǔ)方案。本文將站在開(kāi)發(fā)者的角度,帶著大家一起探究哈希的世界,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05

最新評(píng)論

普定县| 宁蒗| 阳山县| 崇文区| 宜丰县| 霸州市| 视频| 磐安县| 济阳县| 布拖县| 丰镇市| 巴中市| 隆子县| 芦山县| 和政县| 新营市| 丹东市| 定边县| 美姑县| 开化县| 台南市| 自治县| 洱源县| 抚顺县| 东兰县| 长岭县| 普格县| 察雅县| 云林县| 泰来县| 峡江县| 石嘴山市| 南昌市| 马山县| 汪清县| 永善县| 旅游| 湾仔区| 文山县| 桂林市| 曲阜市|