当前位置:编程学习 > 网站相关 >>

wxPython对话框

大多数现代的GUI应用程序,对话框窗口或对话框是不可或缺的一部分。一个对话框被定义为两个或以上的人之间的谈话。在一个计算机应用一个对话框窗口用于“交谈”应用程序。一个对话框用于输入数据、修改数据的修改应用程序的设置等。对话框是重要的通信手段之间的一个用户和计算机程序。
一个简单的消息框
一个消息框提供短信息给用户。一个很好的例子是一个cd刻录的应用程序。当一个cd完成刻录,弹出一个消息框。
[python]
import wx 
class Example(wx.Frame): 
    def __init__(self,*args,**kw): 
        super(Example,self).__init__(*args,**kw) 
        self.InitUI() 
    def InitUI(self): 
        wx.FutureCall(5000,self.ShowMessage) 
         
        self.SetSize((300,200)) 
        self.Centre() 
        self.Show(True) 
    def ShowMessage(self): 
        wx.MessageBox('Down Completed','Info',wx.OK|wx.ICON_INFORMATION) 
 
def main(): 
    ex = wx.App() 
    Example(None) 
    ex.MainLoop() 
if __name__ == '__main__': 
    main()     

这个例子,展示了一个在5秒后弹出的消息框。
[python] view plaincopy
wx.FutureCall(5000, self.ShowMessage) 

wx.FutureCall在5秒后调用的一个方法。第一个参数是一个时间值之后,一个给定的方法被调用。参数是毫秒。第二个参数是一个将被调用的方法。
[python] view plaincopy
def ShowMessage(self): 
    wx.MessageBox('Download completed', 'Info',  
        wx.OK | wx.ICON_INFORMATION) 

wx.MessageBox显示一个小的对话框窗口,我们提供三个参数。文本消息,标题消息和旗帜。旗子只是用来显示不同的按钮和图标。在我们的案例中,我们展示了一个OK按钮和信息图标。


预定义的对话框
wxPython有几个预定义对话。这些是对话框通用编程任务比如显示文本、接收输入,加载和保存文件等等
消息对话框用于向用户显示消息。他们更灵活,比简单的信息框,我们看到在前面的示例。他们是可定制的。我们可以改变图标和按钮,将显示在一个对话框。
以下是旗帜,可以使用的wx.MessageDialog类。
flag 
                     meaning
wx.OK                                 show Ok button
wx.CANCEL                         show Cancel button
wx.YES_NO                         show Yes, No buttons
wx.YES_DEFAULT         make Yes button the default
wx.NO_DEFAULT         make No button the default
wx.ICON_EXCLAMATION show an alert icon
wx.ICON_ERROR         show an error icon
wx.ICON_HAND                 same as wx.ICON_ERROR
wx.ICON_INFORMATION show an info icon
wx.ICON_QUESTION         show a question icon

[python] 
import wx 
class Example(wx.Frame): 
    def __init__(self,*args,**kw): 
        super(Example,self).__init__(*args,**kw) 
        self.InitUI() 
    def InitUI(self): 
        panel = wx.Panel(self) 
        hbox = wx.BoxSizer() 
        sizer = wx.GridSizer(2,2,2,2) 
         
        btn1 = wx.Button(panel,label='info') 
        btn2 = wx.Button(panel,label='error') 
        btn3 = wx.Button(panel,label='question') 
        btn4 = wx.Button(panel,label='alert') 
         
        sizer.AddMany([btn1,btn2,btn3,btn4]) 
         
        hbox.Add(sizer,0,wx.ALL,15) 
        panel.SetSizer(hbox) 
         
        btn1.Bind(wx.EVT_BUTTON, self.ShowMessage1) 
        btn2.Bind(wx.EVT_BUTTON, self.ShowMessage2) 
        btn3.Bind(wx.EVT_BUTTON, self.ShowMessage3) 
        btn4.Bind(wx.EVT_BUTTON, self.ShowMessage4) 
         
        self.SetSize((300, 200)) 
        self.SetTitle('Messages') 
        self.Centre() 
        self.Show(True) 
    def ShowMessage1(self,e): 
        dial = wx.MessageDialog(None,'Download completed','info',wx.OK) 
        dial.ShowModal() 
    def ShowMessage2(self, event): 
        dial = wx.MessageDialog(None, 'Error loading file', 'Error',  
            wx.OK | wx.ICON_ERROR) 
        dial.ShowModal() 
 
    def ShowMessage3(self, event): 
        dial = wx.MessageDialog(None, 'Are you sure to quit?', 'Question',  
            wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION) 
        dial.ShowModal() 
 
    def ShowMessage4(self, event): 
        dial = wx.MessageDialog(None, 'Unallowed operation', 'Exclamation',  
            wx.OK | wx.ICON_EXCLAMATION) 
        dial.ShowModal() 
 
def main(): 
    ex = wx.App() 
    Example(None) 
    ex.MainLoop() 
if __name__ == '__main__': 
    main()     

这个例子显示了四种不同的对话框图标。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,