[myphp]
#/usr/bin/env python
# -*- coding:gb2312 -*-
#-----------------------------------------------
# 演示滚动窗口的程序
#-----------------------------------------------
from wxPython.wx import *
from wxPython.lib.scrolledpanel import wxScrolledPanel
#注意控件wxScrolledPanel是在包wxPython.lib.scrolledpanel中
text = "one tow buckle my shoe three four shut door five six pick up sticks seven eight lay them straight nine ten big fat hen"
#定义一个滚动窗口类
class TestPanel(wxScrolledPanel):
def __init__(self, parent):
wxScrolledPanel.__init__(self, parent, -1)
vbox = wxBoxSizer(wxVERTICAL)
desc = wxStaticText(self, -1, /
u"这是wxScrolledPanel的示例了")
desc.SetForegroundColour("Blue")
vbox.Add(desc, 0, wxALIGN_LEFT|wxALL, 5)
vbox.Add(wxStaticLine(self, -1, size=(1024, -1)),/
0, wxALL, 5)
vbox.AddSpacer(20, 20)
words = text.split()
panel1 = wxScrolledPanel(self, -1, size=(120, 300),/
style = wxTAB_TRAVERSAL|wxSUNKEN_BORDER)
fgs1 = wxFlexGridSizer(cols=2, vgap=4, hgap=4)
for word in words:
label = wxStaticText(panel1, -1, word ":")
tc = wxTextCtrl(panel1, -1, word, size=(50, -1))
fgs1.Add(label, flag=wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL)
fgs1.Add(tc, flag=wxEXPAND|wxRIGHT, 25)
panel1.SetSizer(fgs1)
panel1.SetAutoLayout(1)
panel1.SetupScrolling(scroll_x=False)
panel2 = wxScrolledPanel(self, -1, size=(350, 40),/
style=wxTAB_TRAVERSAL|wxSUNKEN_BORDER)
panel3 = wxScrolledPanel(self, -1, size=(200, 100),/
style = wxTAB_TRAVERSAL|wxSUNKEN_BORDER)
fgs2 = wxFlexGridSizer(cols=25, vgap=4, hgap=4)
fgs3 = wxFlexGridSizer(cols=5, vgap=4, hgap=4)
for i in range(len(words)):
word = words
if i % 5 != 4: label2 = wxStaticText(panel2, -1, word) fgs2.Add(label2, flag=wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL) label3 = wxStaticText(panel3, -1, word) fgs3.Add(label3, flag=wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL) else: tc2 = wxTextCtrl(panel2, -1, word, size=(50, -1)) fgs2.Add(tc2, flag=wxLEFT, 5) tc3 = wxTextCtrl(panel3, -1, word) fgs3.Add(tc3, flag=wxLEFT, 5) panel2.SetSizer(fgs2) panel2.SetAutoLayout(1) panel2.SetupScrolling(scroll_y=False) panel3.SetSizer(fgs3) panel3.SetAutoLayout(1) panel3.SetupScrolling() hbox = wxBoxSizer(wxHORIZONTAL) hbox.AddSpacer(20, 20) hbox.Add(panel1, 0) hbox.AddSpacer(20, 20) vbox2 = wxBoxSizer(wxVERTICAL) vbox2.Add(panel2, 0) vbox2.AddSpacer(20, 20) vbox2.Add(panel3, 0) vbox2.AddSpacer(20, 10) hbox.Add(vbox2, 5) vbox.AddSizer(hbox, 0) self.SetSizer(vbox) self.SetAutoLayout(1) class MyFrame(wxFrame): def __init__(self): wxFrame.__init__(self, None, -1, u"滚动窗口", size=(800, 600)) FG = TestPanel(self) class MyApp(wxApp): def OnInit(self): f = MyFrame() f.Show(true) self.SetTopWindow(f) return true if __name__ == "__main__": a = MyApp(0) a.MainLoop() [/myphp] 下面是运行的截图: [myimg]upload/wxscrolled.png[/myimg]