wxpython对话框dialog之定制对话框示例

发布时间:2020-12-27编辑:脚本学堂
有关wxpython对话框的入门教程,在wxpython定制对话框的方法,两个简化对话框创建的方法,需要的朋友参考下。

有两个简化对话框创建的方法. 它们都会返回一个特定的 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)
三个按钮将依照相关用户界面标准确立的顺序创建。