在此Python GUI中,我们学习下在wxPython中显示“定制表” 。在第一部分中,我们了解到如何在wxPython中创建表或网格。因此在本文中,我们需要为网格或表添加更多功能。
以下是wxPython中Python GUI自定义表的完整代码
import wx
import wx.grid as grid
class MyFrame(wx.Frame):
def __init__(self, parent, title):
super(MyFrame, self).__init__(parent, title =title, size = (800,600))
self.panel = MyPanel(self)
class MyPanel(wx.Panel):
def __init__(self, parent):
super(MyPanel, self).__init__(parent)
mygrid = grid.Grid(self)
mygrid.CreateGrid(26,9)
mygrid.SetCellValue(1,1, "linuxmi.com")
mygrid.SetCellFont(1,1, wx.Font(15, wx.ROMAN, wx.ITALIC, wx.NORMAL))
mygrid.SetCellValue(5,5,"红色")
mygrid.SetCellBackgroundColour(5,5, wx.RED)
mygrid.SetCellTextColour(5,5,wx.WHITE)
mygrid.SetCellValue(8,3, "只读单元格")
mygrid.SetReadOnly(8,3,True)
mygrid.SetCellEditor(6, 0, grid.GridCellNumberEditor(1, 20))
mygrid.SetCellValue(6, 0, "77")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(mygrid, 1, wx.EXPAND)
self.SetSizer(sizer)
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(parent=None, title="Linux迷 www.linuxmi.com")
self.frame.Show()
return True
app = MyApp()
app.MainLoop()
首先,我们有我们的框架类,从wx.Frame继承,wx.Frame是一个最重要的窗口框架,它是我们在这个类中创建MyPanel对象的顶层窗口对象top-level window object。
class MyFrame(wx.Frame):
def __init__(self, parent, title):
super(MyFrame, self).__init__(parent, title =title, size = (800,600))
self.panel = MyPanel(self)
之后,我们创建了MyPanel类,这个类是我们的小部件(如按钮、菜单、复选按钮等)的容器类。
我们已经在这个类中添加了表格,现在我将逐行描述代码。
class MyPanel(wx.Panel):
def __init__(self, parent):
super(MyPanel, self).__init__(parent)
mygrid = grid.Grid(self)
mygrid.CreateGrid(26,9)
mygrid.SetCellValue(1,1, "linuxmi.com")
mygrid.SetCellFont(1,1, wx.Font(15, wx.ROMAN, wx.ITALIC, wx.NORMAL))
mygrid.SetCellValue(5,5,"红色")
mygrid.SetCellBackgroundColour(5,5, wx.RED)
mygrid.SetCellTextColour(5,5,wx.WHITE)
mygrid.SetCellValue(8,3, "只读单元格")
mygrid.SetReadOnly(8,3,True)
mygrid.SetCellEditor(6, 0, grid.GridCellNumberEditor(1, 20))
mygrid.SetCellValue(6, 0, "77")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(mygrid, 1, wx.EXPAND)
self.SetSizer(sizer)
它们用于创建网格或表,还用于指定表的行和列。
mygrid = grid.Grid(self)
mygrid.CreateGrid(26,9)
在这里,我们手动将文本设置为网格行,并为文本添加字体大小。
mygrid.SetCellValue(1,1, "linuxmi.com")
mygrid.SetCellFont(1,1, wx.Font(15, wx.ROMAN, wx.ITALIC, wx.NORMAL))
在本节中,我们将文本设置为白色,并将单元格背景更改为红色
mygrid.SetCellValue(5,5,"红色")
mygrid.SetCellBackgroundColour(5,5, wx.RED)
mygrid.SetCellTextColour(5,5,wx.WHITE)
现在我们将单元格设置为只读,因此你不能改变那个单元格
mygrid.SetCellValue(8,3, "只读单元格")
mygrid.SetReadOnly(8,3,True)
您还可以在单元格的编辑器中设置一个数字
mygrid.SetCellEditor(6, 0, grid.GridCellNumberEditor(1, 20))
mygrid.SetCellValue(6, 0, "77")
运行完整代码,结果如下:
相关文章: