wxPythonModalDialog模式对话框

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

《wxPython in Action》chap 9 笔记

1. Modal Dialog(模式对话框)A modal dialog blocks other widgets from receiving user events until it is closed;

in otherWords, it places the user in dialog mode for the duration of its existence.

模式对话框阻塞了别的窗口部件接收用户事件,直到该模式对话框被关闭。

严格来说,dialog 与 frame 在外观上没有区别,只是处理事件(event)的方式不一样。

通常,dialog 在外观上要稍微简单一点,所以很少使用 wx.Panel。

wx.Dialog 具备 wx.Panel 的性质,widgets 一般直接添加到 wx.Dialog 中即可。

2. 展示与关闭 DialogModal Dialog 与 普通的 Frame 用法略有差别。

最简单的示例代码如下:

importwxclassSubclassDialog(wx.Dialog):def__init__(self):

wx.Dialog.__init__(self, None, -1,'Dialog Subclass', size=(300, 100))

okButton= wx.Button(self, wx.ID_OK,"OK", pos=(15, 15))

okButton.SetDefault()

cancelButton= wx.Button(self, wx.ID_CANCEL,"Cancel", pos=(115, 15))if__name__=='__main__':

app=wx.PySimpleApp()

dialog=SubclassDialog()

result=dialog.ShowModal()ifresult ==wx.ID_OK:PRint"OK"else:print"Cancel"dialog.Destroy()

2.1 展示 Dialog展示 Dialog 使用 ShowModal(),程序会等待 ShowModal() 执行结束并获取其返回值。

此时,Dialog 是 wxPython 应用接受用户事件的唯一组件。其他应用不受影响。

2.2 结束 Dialog Mode调用 EndModal(retCode) 方法可以关闭(close)Dialog Mode,retCode 是 int 值,被 ShowModal() 返回。

此时,只是结束了 Dialog Mode,并未摧毁 Dialog。可以在其他地方继续展示该 Dialog。

通常在 event 的 handler 中调用 EndModal()。

2.3 摧毁 Dialog调用 Destroy() 方法

2.4 典型用法dialog =SubclassDialog()

result=dialog.ShowModal() # 展示对话框,并等待结果ifresult ==wx.ID_OK: # 判断结果,并执行相应处理print"OK"else:print"Cancel"dialog.Destroy() # 摧毁 Dialog

2.5 自定义 event 的 handler,一般需要调用 EndModal()例如,用于连接数据库的 handler 实现如下:

defOnConnect(self, event=None):

host=self.input_host.GetValue()

port=int(self.input_port.GetValue())ifdb.connect(host, port): # connected

self.EndModal(wx.ID_OK)else:

msg_error='Error connecting to host(%s)'%host

wx.MessageBox(msg_error,'Error', wx.OK | wx.ICON_ERROR)

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航