有两个简化对话框创建的方法. 它们都会返回一个特定的 sizer 对象.
CreateTextSizer(self, string message)
CreateButtonSizer(self, long flags)
CreateTextSizer() 方法创建出一个文本 sizer。
专题教程:wxpython中文教程
例子,通过添加一些按钮来演示这个方法。
代码:
#!/usr/bin/python
#coding=utf-8
# www.plcxue.com
#customdialog1.py
import wx
class MyDialog(wx.Dialog):
def __init__(self, parent, id, title):
wx.Dialog.__init__(self, parent, id, title, size=(350, 300))
sizer = self.CreateTextSizer('我的按钮')
sizer.Add(wx.Button(self, -1, '按钮1'), 0, wx.ALL, 5)
sizer.Add(wx.Button(self, -1, '按钮2'), 0, wx.ALL, 5)
sizer.Add(wx.Button(self, -1, '按钮3'), 0, wx.ALL, 5)
sizer.Add(wx.Button(self, -1, '按钮4'), 0, wx.ALL | wx.ALIGN_CENTER, 5)
sizer.Add(wx.Button(self, -1, '按钮5'), 0, wx.ALL | wx.EXPAND, 5)
self.SetSizer(sizer)
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(550, 500))
panel = wx.Panel(self, -1)
wx.Button(panel, 1, '展示定制对话框', (100, 100))
self.Bind(wx.EVT_BUTTON, self.OnShowCustomDialog, id=1)
def OnShowCustomDialog(self, event):
dia = MyDialog(self, -1, '系列按钮')
dia.ShowModal()
dia.Destroy()
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'customdialog1.py')
frame.Show(True)
frame.Center()
return True
app = MyApp(0)
app.MainLoop()
这里的 CreateButtonSizer() 方法创建出一行的按钮。
通过不同的标志,可以指定相应的按钮类型. CreateButtonSizer() 方法有着以下可用的标志:
wx.OK
wx.CANCEL
wx.YES
wx.NO
wx.HELP
wx.NO_DEFAULT
例子:
#!/usr/bin/python
#coding=utf-8
# www.plcxue.com
#customdialog2.py
import wx
class MyDialog(wx.Dialog):
def __init__(self, parent, id, title):
wx.Dialog.__init__(self, parent, id, title)
vbox = wx.BoxSizer(wx.VERTICAL)
stline = wx.StaticText(self, 11, 'Disciplice ist Macht.')
vbox.Add(stline, 1, wx.ALIGN_CENTER | wx.TOP, 45)
sizer = self.CreateButtonSizer(wx.NO|wx.YES|wx.HELP)
vbox.Add(sizer, 0, wx.ALIGN_CENTER)
self.SetSizer(vbox)
self.Bind(wx.EVT_BUTTON, self.OnYes, id=wx.ID_YES)
def OnYes(self, event):
self.Close()
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title)
panel = wx.Panel(self, -1)
wx.Button(panel, 1, '显示定制对话框', (50, 50))
self.Bind(wx.EVT_BUTTON, self.OnShowCustomDialog, id=1)
def OnShowCustomDialog(self, event):
dia = MyDialog(self, -1, '')
val = dia.ShowModal()
dia.Destroy()
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'customdialog2.py')
frame.Show(True)
frame.Center()
return True
app = MyApp(0)
app.MainLoop()
注意,wxPython 是不会考虑标志的顺序的。
sizer = self.CreateButtonSizer(wx.NO|wx.YES|wx.HELP)
三个按钮将依照相关用户界面标准确立的顺序创建。