栏目列表
 
 
首页 > 操作系统 > Linux > wxPython代码编写系列之wxScrolledPanel示例
 

wxPython代码编写系列之wxScrolledPanel示例

日期:2006-06-12 00:35:58  来源:网络转载
请您记住思索网的网址: http://www.4so.net  [加入收藏夹]

    
[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]
 
 
热门信息
 
相关文章