wxpython设计GUI:grid控件实现显示表单数据功能,同时实现界面的上下翻页以及跳转功能

该博客展示了如何使用Python和wxPython库创建一个应用程序,该程序读取Excel文件中的数据并将其显示在一个带有分页功能的网格控件中。用户可以进行上下翻页和跳转到指定页码,同时提供了刷新和退出功能。程序首先定义了一个`excel`类用于操作Excel文件,然后创建了一个`Menu_Frame`类实现了界面布局,包括网格控件、分页按钮等。此外,还详细介绍了如何根据不同的列标题数量调整界面显示,并提供了修改每页数据显示数量和单元格尺寸的方法。

grid控件实现显示表单数据功能,同时实现界面的上下翻页以及跳转功能。

1. 效果展示

在这里插入图片描述

2. 代码实现

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Logintern09


###########################################################################
## Python code generated with wxFormBuilder (version Jun 17 2015)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################

import wx
import wx.xrc
import wx.grid
import wx.adv
import os
import sys
from openpyxl import load_workbook


# 由于字典的keys是无序排列的,需要增加bill_view_list列表,帮助确认key在keys中的索引
bill_view_list = ["单号", "需求描述", "需求来源", "创建人",  "流程状态",
                  "问题来源", "项目状态", "严重等级", "创建日期"]

# 此列表应用于单号总表.xlsx的列标题排序
excel_bill_list = ["单号", "需求描述", "需求来源", "创建人", "问题来源",
                  "项目状态", "严重等级", "流程状态", "创建日期"]

view_bill_nums = 10


class excel():
    def __init__(self, file, sheet_idx):
        self.file = file
        self.wb = load_workbook(self.file)
        sheets = self.wb.get_sheet_names()
        self.sheet = sheets[sheet_idx]
        self.ws = self.wb[self.sheet]

    def getSheetNames(self):
        sheets = self.wb.get_sheet_names()
        return sheets

    # 删除sheet
    def del_sheet(self, sheet_name):
        sheets = self.wb.get_sheet_names()
        if sheet_name in sheets:
            sheet = self.wb[sheet_name]
            self.wb.remove(sheet)
            self.wb.save(self.file)
        else:
            raise NameError("%s不存在该sheet页签:%s" % (self.file, sheet_name))

    # 删除指定的行
    def delete_row(self, row_idx):
        # 删除行(列)后,下(后)面的表格将自动上(前)移。
        self.ws.delete_rows(row_idx)
        self.wb.save(self.file)

    # 获取表格的总行数和总列数
    def getRowsClosNum(self):
        rows = self.ws.max_row
        columns = self.ws.max_column
        return rows, columns

    # 获取某个单元格的值
    def getCellValue(self, row, column):
        cellvalue = self.ws.cell(row=row, column=column).value
        return cellvalue

    # 获取某列的所有值
    def getColValues(self, column):
        rows = self.ws.max_row
        columndata = []
        for i in range(1, rows + 1):
            cellvalue = self.ws.cell(row=i, column=column).value
            columndata.append(cellvalue)
        return columndata

    # 获取某行所有值
    def getRowValues(self, row):
        columns = self.ws.max_column
        rowdata = []
        for i in range(1, columns + 1):
            cellvalue = self.ws.cell(row=row, column=i).value
            rowdata.append(cellvalue)
        return rowdata

    # 设置某个单元格的值
    def setCellValue(self, row, colunm, cellvalue):
        try:
            self.ws.cell(row=row, column=colunm).value = cellvalue
            self.wb.save(self.file)
        except:
            self.ws.cell(row=row, column=colunm).value = "writefail"
            self.wb.save(self.file)


###########################################################################
## Class Menu_Frame
###########################################################################

class Menu_Frame(wx.Frame):

    def __init__(self, parent, id=-1, UpdateUI=None):
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"", pos=wx.DefaultPosition,
                          size=wx.Size(1300, 700), style=wx.DEFAULT_FRAME_STYLE)
        self.UpdateUI = UpdateUI

        # self.ShowFullScreen(True, wx.DEFAULT_FRAME_STYLE^(wx.CLOSE_BOX))  # 初始化窗口就默认全屏显示

        self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
        self.SetBackgroundColour(wx.Colour("TURQUOISE"))

        bSizer20 = wx.BoxSizer(wx.VERTICAL)

        bSizer22 = wx.BoxSizer(wx.VERTICAL)

        self.m_staticText5 = wx.StaticText(self, wx.ID_ANY, u"", wx.DefaultPosition, wx.DefaultSize, 0)
        self.m_staticText5.Wrap(-1)
        self.m_staticText5.SetFont(wx.Font(24, 75, 90, 90, False, "黑体"))

        bSizer22.Add(self.m_staticText5, 0, wx.ALIGN_CENTER | wx.ALL, 20)

        bSizer20.Add(bSizer22, 0, wx.EXPAND, 5)

        self.m_notebook6 = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSi
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草莓仙生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值