geekdoc-python-zh/docs/pythonlibrary/wxpython-creating-a-grid-wi...

3.4 KiB
Raw Permalink Blame History

wxPython:用 XRC 创建网格

原文:https://www.blog.pythonlibrary.org/2013/07/24/wxpython-creating-a-grid-with-xrc/

我最近试图帮助某人(在 wxPython 邮件列表上)弄清楚如何通过 XRC 使用网格小部件(wx.grid.Grid)。这应该很简单,但是如果您运行下面的代码,您会发现一个奇怪的问题:


import wx
from wx import xrc

########################################################################
class MyApp(wx.App):
    def OnInit(self):
        self.res = xrc.XmlResource("grid.xrc")

        frame = self.res.LoadFrame(None, 'MyFrame')
        panel = xrc.XRCCTRL(frame, "MyPanel")
        grid = xrc.XRCCTRL(panel, "MyGrid")
        print type(grid)
        grid.CreateGrid(25, 6)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(grid, 1, wx.EXPAND|wx.ALL, 5)

        panel.SetSizer(sizer)

        frame.Show()
        return True

if __name__ == "__main__":
    app = MyApp(False)
    app.MainLoop()

您会注意到当您运行这个命令时输出的类型是“wx”。_windows。ScrolledWindow”不是网格对象。因此您将得到以下回溯结果:


AttributeError: 'ScrolledWindow' object has no attribute 'CreateGrid'
File "c:\Users\mdriscoll\Desktop\xrcGridDemo.py", line 26, in app = MyApp(False)
File "C:\Python26\Lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 7981, in __init__
  self._BootstrapApp()
File "C:\Python26\Lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 7555, in _BootstrapApp
  return _core_.PyApp__BootstrapApp(*args, **kwargs)
File "c:\Users\mdriscoll\Desktop\xrcGridDemo.py", line 14, in OnInit
  grid.CreateGrid(25, 6) 

现在你可能想知道 XRC 文件里有什么,以下是它的内容:

`