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()
这个例子显示了四种不同的对话框图标。