myapp.py:
# -*- coding: gb2312 -*-
import wx, wx.xrc
import sys
class MyApp(wx.App):
def OnInit(self):
self.RedirectStdio("err.log")
self.res = wx.xrc.XmlResource("my.xrc")
self.InitFrame()
self.Show()
return True
def InitFrame(self):
self.frame = self.res.LoadFrame(None, "MainFrame")
self.panel = wx.xrc.XRCCTRL(self.frame, "MainPanel")
self.list = wx.ListCtrl(self.panel, wx.NewId(),
style=wx.LC_REPORT
| wx.BORDER_NONE
| wx.LC_EDIT_LABELS
| wx.LC_SORT_ASCENDING
)
self.list.InsertColumn(0, "Artist")
self.list.InsertColumn(1, "Title")
self.list.InsertColumn(2, "Genre")
box = wx.BoxSizer(wx.VERTICAL)
box.Add(self.list, 1, wx.EXPAND|wx.ALL, 5)
self.panel.SetSizer(box)
def Show(self):
self.SetTopWindow(self.frame)
self.frame.Show()
app = MyApp()
app.MainLoop()
my.xrc:
<?xml version="1.0" encoding="utf-8"?>
<resource>
<object class="wxFrame" name="MainFrame">
<title></title>
<object class="wxPanel" name="MainPanel">
<style>wxWANTS_CHARS</style>
</object>
</object>
</resource>
说明:
因为panel并不会讲其中的控件最大化,所以其中的ListCtrl并不会占据整个窗口,但是使用BoxSizer可以做到这一点。见代码中的红色部分。
# -*- coding: gb2312 -*-
import wx, wx.xrc
import sys
class MyApp(wx.App):
def OnInit(self):
self.RedirectStdio("err.log")
self.res = wx.xrc.XmlResource("my.xrc")
self.InitFrame()
self.Show()
return True
def InitFrame(self):
self.frame = self.res.LoadFrame(None, "MainFrame")
self.panel = wx.xrc.XRCCTRL(self.frame, "MainPanel")
self.list = wx.ListCtrl(self.panel, wx.NewId(),
style=wx.LC_REPORT
| wx.BORDER_NONE
| wx.LC_EDIT_LABELS
| wx.LC_SORT_ASCENDING
)
self.list.InsertColumn(0, "Artist")
self.list.InsertColumn(1, "Title")
self.list.InsertColumn(2, "Genre")
box = wx.BoxSizer(wx.VERTICAL)
box.Add(self.list, 1, wx.EXPAND|wx.ALL, 5)
self.panel.SetSizer(box)
def Show(self):
self.SetTopWindow(self.frame)
self.frame.Show()
app = MyApp()
app.MainLoop()
my.xrc:
<?xml version="1.0" encoding="utf-8"?>
<resource>
<object class="wxFrame" name="MainFrame">
<title></title>
<object class="wxPanel" name="MainPanel">
<style>wxWANTS_CHARS</style>
</object>
</object>
</resource>
说明:
因为panel并不会讲其中的控件最大化,所以其中的ListCtrl并不会占据整个窗口,但是使用BoxSizer可以做到这一点。见代码中的红色部分。