在此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")

运行完整代码,结果如下:

相关文章

使用Python的GUI库wxPython创建表

发表回复