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

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

被折叠的 条评论
为什么被折叠?



