wxWidgets UI笔记
来源:互联网 发布:中银淘宝校园卡办理 编辑:程序博客网 时间:2024/06/10 16:41
(一)wx.Frame背景色修正
import wxclass MainFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, style=wx.DEFAULT_FRAME_STYLE) self.SetBackgroundColour(wx.NullColour) class App(wx.App): def OnInit(self): frame = MainFrame() frame.Show() return True if __name__ == '__main__': app = App() app.MainLoop()
(二)常用界面布局
wxt.py
#!/usr/bin/env pythonimport datetimeimport wxdef ToPyDateTime(wxdate): return datetime(wxdate.GetYear(), wxdate.GetMonth()+1, wxdate.GetDay())def StaticBoxSizer(orient, parent, label=''): box = wx.StaticBox(parent, label=label) sizer = wx.StaticBoxSizer(box, orient) return sizerdef StaticTextSizer(orient, parent, label='', widget = None): box = wx.BoxSizer(orient) if orient == wx.HORIZONTAL: box.Add(wx.StaticText(parent, -1, label), 0, wx.ALIGN_CENTER|wx.ALL, 5) box.Add(widget, 1, wx.ALIGN_CENTER|wx.ALL, 5) elif orient == wx.VERTICAL: box.Add(wx.StaticText(parent, -1, label), 0, wx.TOP|wx.RIGHT|wx.LEFT, 5) box.Add(widget, 0, wx.EXPAND|wx.RIGHT|wx.LEFT|wx.BOTTOM, 5) return box
test.py
import wximport wxtclass MainFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, style=wx.DEFAULT_FRAME_STYLE) self.SetBackgroundColour(wx.NullColour) self.buttons = [ wx.Button(self, -1, str(i)) for i in range(4) ] self.textCtrls = [ wx.TextCtrl(self) for i in range(4) ] vbox = wx.BoxSizer(wx.VERTICAL) self.SetSizer(vbox) #self.SetAutoLayout(True) hbox0 = wxt.StaticBoxSizer(wx.HORIZONTAL, self, 'Middle Spacer') hbox0.Add(self.buttons[0], 0, wx.ALL, 5) hbox0.AddStretchSpacer() hbox0.Add(self.buttons[1], 0, wx.ALL, 5) hbox0.Add(self.buttons[2], 0, wx.ALL, 5) hbox1 = wxt.StaticBoxSizer(wx.VERTICAL, self, 'Left Spacer') hbox10 = wxt.StaticTextSizer(wx.HORIZONTAL, self, 'Text 0:', self.textCtrls[0]) hbox11 = wxt.StaticTextSizer(wx.HORIZONTAL, self, 'Text 1:', self.textCtrls[1]) hbox12 = wxt.StaticTextSizer(wx.VERTICAL, self, 'Text 2:', self.textCtrls[2]) hbox13 = wxt.StaticTextSizer(wx.VERTICAL, self, 'Text 3:', self.textCtrls[3]) hbox14 = wx.BoxSizer(wx.HORIZONTAL) hbox14.AddStretchSpacer() hbox14.Add(self.buttons[3], 0, wx.ALL, 5) hbox1.Add(hbox10, 0, wx.EXPAND) hbox1.Add(hbox11, 0, wx.EXPAND) hbox1.Add(hbox12, 0, wx.EXPAND) hbox1.Add(hbox13, 0, wx.EXPAND) hbox1.Add(hbox14, 0, wx.EXPAND) vbox.Add(hbox0, 0, wx.EXPAND|wx.ALL, 5) vbox.Add(hbox1, 0, wx.EXPAND|wx.ALL, 5) self.Fit() class App(wx.App): def OnInit(self): frame = MainFrame() frame.Show() return True if __name__ == '__main__': app = App() app.MainLoop()
(三)常用界面布局,简版
#!/usr/bin/env pythonimport datetimeimport wxdef ToPyDateTime(wxdate): return datetime.datetime(wxdate.GetYear(), wxdate.GetMonth()+1, wxdate.GetDay())def BoxLayout(rootWidget = None, \ node = [], \ parent = None, \ parentOrient = wx.HORIZONTAL, \ gap = 5): if type(node) != list: node = [node] me = None orient = wx.HORIZONTAL mask = 'a' children = [] label = '' if node[0] == 'hbox': orient = wx.HORIZONTAL me = wx.BoxSizer(orient) mask = node[1] children = node[2] elif node[0] == 'vbox': orient = wx.VERTICAL me = wx.BoxSizer(orient) mask = node[1] children = node[2] elif node[0] == 'hgroup': orient = wx.HORIZONTAL mask = node[1] label = node[2] children = node[3] box = wx.StaticBox(rootWidget, label=label) me = wx.StaticBoxSizer(box, orient) elif node[0] == 'vgroup': orient = wx.VERTICAL mask = node[1] label = node[2] children = node[3] box = wx.StaticBox(rootWidget, label=label) me = wx.StaticBoxSizer(box, orient) elif node[0] == 'hlabel': orient = wx.HORIZONTAL me = wx.BoxSizer(orient) mask = node[1] label = node[2] child = node[3] me.Add(wx.StaticText(rootWidget, -1, label), 0, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER, 5) me.Add(child, 1, wx.ALL, 5) elif node[0] == 'vlabel': orient = wx.VERTICAL me = wx.BoxSizer(orient) mask = node[1] label = node[2] child = node[3] me.Add(wx.StaticText(rootWidget, -1, label), 0, wx.LEFT|wx.RIGHT, 5) me.Add(child, 0, wx.EXPAND|wx.ALL, 5) elif node[0] == '~': if parent: parent.AddStretchSpacer() else: me = node[0] if len(node) > 1: mask = node[1] prop = 0 style = 0 if parentOrient == wx.HORIZONTAL: if 'h' in mask: prop = 1 if 'v' in mask: style |= wx.EXPAND elif parentOrient == wx.VERTICAL: if 'v' in mask: prop = 1 if 'h' in mask: style |= wx.EXPAND if 'a' in mask: style |= wx.ALL if 't' in mask: style |= wx.TOP if 'b' in mask: style |= wx.BOTTOM if 'l' in mask: style |= wx.LEFT if 'r' in mask: style |= wx.RIGHT if 'c' in mask: style |= wx.ALIGN_CENTER if (parent is not None) and (me is not None): parent.Add(me, prop, style, gap) if me is not None: for child in children: BoxLayout(rootWidget, child, me, orient, gap) return me if __name__ == '__main__': class MainFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, style=wx.DEFAULT_FRAME_STYLE) self.SetBackgroundColour(wx.NullColour) self.buttons = [ wx.Button(self, -1, str(i)) for i in range(4) ] self.textCtrls = [ wx.TextCtrl(self) for i in range(4) ] self.SetSizer(BoxLayout(self, ['vbox', 'h', [ ['hgroup', 'ha', 'Middle Spacer', [self.buttons[0], '~', self.buttons[1], self.buttons[2] ]], ['vgroup', 'ha', 'Left Spacer', [ ['hlabel', 'h', 'Label-0', self.textCtrls[0]], ['hlabel', 'h', 'Label-1', self.textCtrls[1]], ['vlabel', 'h', 'Label-2', self.textCtrls[2]], ['vlabel', 'h', 'Label-3', self.textCtrls[3]], ['hbox', 'h', ['~', self.buttons[3]]] ]], ]])) self.Fit() class App(wx.App): def OnInit(self): frame = MainFrame() frame.Show() return True app = App() app.MainLoop()
- wxWidgets UI笔记
- wxwidgets 笔记
- wXWidgets学习笔记之一:wXWidgets的配置
- wxWidgets学习笔记(1)wxWidgets简介
- wxWidgets学习笔记(2)wxWidgets体系结构
- wxWidgets使用笔记
- wxWidgets学习笔记三
- wxWidgets学习笔记四
- wxWidgets学习笔记
- wxWidgets学习笔记
- wxWidgets 学习笔记
- wxWidgets学习笔记
- 用wxWidgets写跨平台UI界面
- wxWidgets学习笔记(一)
- 学习wxWidgets的笔记一
- 学习wxWidgets的笔记二
- 学习wxWidgets的笔记二
- wxWidgets 学习笔记(一)
- LDA学习笔记5-LDA模型
- Linux常用命令详解之权限管理命令
- hdu4287 Intelligent IME
- do...while(0)的妙用
- 遮盖与投影
- wxWidgets UI笔记
- Android开源
- 当java swing界面启动无法正常显示,当调整JFrame大小后才能全部显示子组件
- 在ios中运用core animation暂停和继续动画
- hdu4415 Assassin’s Creed
- 赖勇浩:推荐《Linux 多线程服务器端编程》
- “啃老”族,蹭住多久才算久?
- hdu4414 Finding crosses
- [二次开发]dede会员列表调用(企业、个人)