wx.Dialog(parent, id, title, pos, size, style)
Dialog控件的默认外观显示在标题栏中只关闭对话框。但是,它可以用下面的风格参数的组合进行定制−
S.N. | 参数 & 描述 |
---|---|
1 |
wx.CAPTION
对话框的文字说明
|
2 |
wx.DEFAULT_DIALOG_STYLE
相当于wxCAPTION,wxCLOSE_BOX和wxSYSTEM_MENU的组合
|
3 |
wx.RESIZE_BORDER
显示可调框架窗口的大小
|
4 |
wxSYSTEM_MENU
显示系统菜单
|
5 |
wx.CLOSE_BOX
框架(frame)上显示一个关闭
|
6 |
wx.MAXIMIZE_BOX
在对话框中显示一个最大化框
|
7 |
wx.MINIMIZE_BOX
在对话框中显示一个最小化框(frame)
|
8 |
wx.STAY_ON_TOP
确保对话框停留在所有其他窗口的顶部
|
9 |
wx.DIALOG_NO_PARENT
为防止产生无看管对话框。不推荐用于模态对话框
|
S.N. |
事件和说明
|
---|---|
1 |
EVT_CLOSE
当用户或编程对话框的关闭
|
2 |
EVT_INIT_DIALOG When the dialog is being initialized |
如上所述,对话的目的是收集数据并返回到父窗口。然而,一些有用的方法可用于 Dialog类。
S.N. |
方法和说明
|
---|---|
1 |
DoOK()
当对话框中的OK按钮被按下时调用
|
2 |
ShowModal()
显示了在应用程序模态方式的对话框
|
3 |
ShowWindowModal()
对话框只顶层父窗口的模式
|
4 |
EndModal()
ShowModal调用传递值结束一个对话框模式
|
一个预配置的对话框是MessageDialog。它用于显示的一条或多条线用具有标准ID的按钮的消息。 下面是对MessageDialog标准按钮选择列表。
S.N. |
按钮和说明
|
---|---|
1 |
wx.OK
显示OK按钮
|
2 |
wx.CANCEL
显示取消(Cancel)按钮
|
3 |
wx.YES_NO
显示“是”,“否”按钮
|
4 |
wx.YES_DEFAULT
使Yes按钮为默认
|
5 |
wx.NO_DEFAULT 使No按钮为默认 |
6 |
wx.ICON_EXCLAMATION
显示警告图标
|
7 |
wx.ICON_ERROR
显示错误图标
|
8 |
wx.ICON_HAND
同wx.ICON_ERROR
|
9 |
wx.ICON_INFORMATION
显示一个信息图标
|
10 |
wx.ICON_QUESTION
显示一个问题图标
|
MessageDialog
wx.MessageDialog(parent, message, caption, style, pos)
一个或多个消息参数要显示文本的行,文字说明显示在标题栏。默认style参数是wx.OK| wx.ECNRE。 其他样式style参数允许消息框进行定制。
实例
下面给出的是对话的模式和无模式的行为简单的演示。父窗口是wx.Frame对象带有两个按钮。Click事件的第一个按钮将显示在模态的方式的对话框。因此,防止父窗口上的任何操作,直到对话框关闭。第二个按钮,将显示一个无模式对话框,这并不妨碍访问父窗口。第三个按钮会显示一个消息框。
import wx class MyDialog(wx.Dialog): def __init__(self, parent, title): super(MyDialog, self).__init__(parent, title = title, size = (250,150)) panel = wx.Panel(self) self.btn = wx.Button(panel, wx.ID_OK, label = "ok", size = (50,20), pos = (75,50)) class Mywin(wx.Frame): def __init__(self, parent, title): super(Mywin, self).__init__(parent, title = title, size = (250,150)) self.InitUI() def InitUI(self): panel = wx.Panel(self) btn = wx.Button(panel, label = "Modal Dialog", pos = (75,10)) btn1 = wx.Button(panel, label = "Modeless Dialog", pos = (75,40)) btn2 = wx.Button(panel, label = "MessageBox", pos = (75,70)) btn.Bind(wx.EVT_BUTTON, self.OnModal) a = btn1.Bind(wx.EVT_BUTTON, self.OnModeless) print a btn2.Bind(wx.EVT_BUTTON, self.Onmsgbox) self.Centre() self.Show(True) def OnModal(self, event): a = MyDialog(self, "Dialog").ShowModal() print a def OnModeless(self, event): a = MyDialog(self, "Dialog").Show() def Onmsgbox(self, event): wx.MessageBox("This is a Message Box", "Message" ,wx.OK | wx.ICON_INFORMATION) ex = wx.App() Mywin(None,'Dialog Demo - www.yiibai.com') ex.MainLoop()
wx.TextEntryDialog
wx.TextEntryDialog(parent, id, message, caption, value, style, pos)
在对话窗口传递的消息参数要显示的文字。caption 参数是要显示在标题栏的字符串。在文本框中默认字符串值value参数。TextCtrl在对话框可以设置显示密码字符(wx.TE_PASSWORD)和/或多行(wx.TE_MULTILINE)。
S.N. |
方法和说明
|
---|---|
1 |
SetMaxLength()
设置用户可以输入到文本框最大字符数
|
2 |
SetValue()
设置文本框的值编程
|
3 |
GetValue()
返回该文本框的内容
|
4 |
ShowModal()
显示对话框模态。返回 wx.ID_OK 如果用户确认输入,以及 wx.ID_CANCEL 如果对话框被拒绝
|
实例
self.text = wx.TextCtrl(pnl, size = (250, 25),style = wx.TE_READONLY) self.btn1 = wx.Button(pnl, label = "Enter Text")
self.Bind(wx.EVT_BUTTON, self.OnClick, self.btn1)
dlg = wx.TextEntryDialog(self, 'Enter Your Name','Text Entry Dialog')
if dlg.ShowModal() == wx.ID_OK: self.text.SetValue("Name entered:"+dlg.GetValue())
import wx class Mywin(wx.Frame): def __init__(self, parent, title): super(Mywin, self).__init__(parent, title = title,size = (300,200)) self.InitUI() def InitUI(self): self.count = 0 pnl = wx.Panel(self) vbox = wx.BoxSizer(wx.VERTICAL) hbox1 = wx.BoxSizer(wx.HORIZONTAL) hbox2 = wx.BoxSizer(wx.HORIZONTAL) self.text = wx.TextCtrl(pnl, size = (250, 25),style = wx.TE_READONLY) self.btn1 = wx.Button(pnl, label = "Enter Text") self.Bind(wx.EVT_BUTTON, self.OnClick, self.btn1) hbox1.Add(self.text, proportion = 1, flag = wx.ALIGN_CENTRE) hbox2.Add(self.btn1, proportion = 1, flag = wx.RIGHT, border = 10) vbox.Add((0, 30)) vbox.Add(hbox1, flag = wx.ALIGN_CENTRE) vbox.Add((0, 20)) vbox.Add(hbox2, proportion = 1, flag = wx.ALIGN_CENTRE) pnl.SetSizer(vbox) self.Centre() self.Show(True) def OnClick(self, e): dlg = wx.TextEntryDialog(self, 'Enter Your Name','Text Entry Dialog') if dlg.ShowModal() == wx.ID_OK: self.text.SetValue("Name entered:"+dlg.GetValue()) dlg.Destroy() ex = wx.App() Mywin(None,'TextEntry Demo - www.yiibai.com') ex.MainLoop()
wx.FileDialog类
此类表示一个文件选择对话框。它使用户可以浏览文件系统并选择要打开文件或保存。对话框的外观是由操作系统特定的。
wx.FileDialog(parent, message, DefaultDir, DefaultFile, wildcard, style, pos, size)
该消息表示将要显示的文本。 DefaultDir是初始目录。一个或多个类型的文件可以被设置为通过通配符参数所表示的文件的过滤器。
S.N. |
参数和说明
|
---|---|
1 |
wx.FD_DEFAULT_STYLE
相当于wxFD_OPEN
|
2 |
wx.FD_OPEN
这是一个打开的对话框;该对话框的默认按钮的标签是“打开”
|
3 |
wx.FD_SAVE
这是一个保存对话框;该对话框的默认按钮的标签是“保存”
|
4 |
wx.FD_OVERWRITE_PROMPT
对于只保存对话框:提示进行确认,如果一个文件将被覆盖
|
5 |
wx.FD_MULTIPLE
仅适用于打开的对话框:允许选择多个文件
|
6 |
wx.FD_CHANGE_DIR
更改当前工作目录到用户选择的文件是目录
|
S.N. |
函数与说明
|
---|---|
1 |
GetDirectory() 返回默认目录 |
2 |
GetFileName() 返回默认文件名 |
3 |
GetPath()
返回选定文件的完整路径
|
4 |
SetDirectory() 设置默认目录 |
5 |
SetFilename() 设置默认文件 |
6 |
SetPath() 设置文件路径 |
7 |
ShowModal()
显示对话框,如果用户单击OK按钮返回wx.ID_OK,否则 wx.ID_CANCEL
|
实例
self.text = wx.TextCtrl(pnl, size = (-1,200), style = wx.TE_MULTILINE) self.btn1 = wx.Button(pnl, label = "Open a File")
self.Bind(wx.EVT_BUTTON, self.OnClick, self.btn1)
OnClick()函数显示一个FileDialog的打开模式。其选择返回为dlg。通过GetPath()函数获得的选定文件和它的内容显示在父窗口的TextCtrl框。
def OnClick(self, e): wildcard = "Text Files (*.txt)|*.txt" dlg = wx.FileDialog(self, "Choose a file", os.getcwd(), "", wildcard, wx.OPEN) if dlg.ShowModal() == wx.ID_OK: f = open(dlg.GetPath(), 'r') with f: data = f.read() self.text.SetValue(data)
import wx import os class Mywin(wx.Frame): def __init__(self, parent, title): super(Mywin, self).__init__(parent, title = title) self.InitUI() def InitUI(self): self.count = 0 pnl = wx.Panel(self) vbox = wx.BoxSizer(wx.VERTICAL) hbox1 = wx.BoxSizer(wx.HORIZONTAL) hbox2 = wx.BoxSizer(wx.HORIZONTAL) self.text = wx.TextCtrl(pnl, size = (-1,200),style = wx.TE_MULTILINE) self.btn1 = wx.Button(pnl, label = "Open a File") self.Bind(wx.EVT_BUTTON, self.OnClick, self.btn1) hbox1.Add(self.text, proportion = 1, flag = wx.ALIGN_CENTRE) hbox2.Add(self.btn1, proportion = 1, flag = wx.RIGHT, border = 10) vbox.Add(hbox2, proportion = 1, flag = wx.ALIGN_CENTRE) vbox.Add(hbox1, proportion = 1, flag = wx.EXPAND|wx.ALIGN_CENTRE) pnl.SetSizer(vbox) self.Centre() self.Show(True) def OnClick(self, e): wildcard = "Text Files (*.txt)|*.txt" dlg = wx.FileDialog(self, "Choose a file", os.getcwd(), "", wildcard, wx.OPEN) if dlg.ShowModal() == wx.ID_OK: f = open(dlg.GetPath(), 'r') with f: data = f.read() self.text.SetValue(data) dlg.Destroy() ex = wx.App() Mywin(None, 'FileDialog Demo - www.yiibai.com') ex.MainLoop()
wx.FontDialog 类
这个类的对象是一个字体选择对话框。这个对话框的外观也为操作系统特有的。属性,例如名称,大小,权重等。所选字体的形式返回作为此对话框的返回值。
wx.FontDialog(parent, data)
self.text = wx.StaticText(pnl, label = "hello") self.btn1 = wx.Button(pnl, label = "Choose Font")
def OnClick(self, e): dlg = wx.FontDialog(self,wx.FontData()) if dlg.ShowModal() == wx.ID_OK: data = dlg.GetFontData() font = data.GetChosenFont() self.text.SetFont(font) dlg.Destroy()
import wx import os class Mywin(wx.Frame): def __init__(self, parent, title): super(Mywin, self).__init__(parent, title = title, size = (400, 300)) self.InitUI() def InitUI(self): self.count = 0 pnl = wx.Panel(self) vbox = wx.BoxSizer(wx.VERTICAL) hbox1 = wx.BoxSizer(wx.HORIZONTAL) hbox2 = wx.BoxSizer(wx.HORIZONTAL) self.text = wx.StaticText(pnl, label = "hello") self.btn1 = wx.Button(pnl, label = "Choose Font") self.Bind(wx.EVT_BUTTON, self.OnClick, self.btn1) hbox1.Add(self.text, proportion = 1, flag = wx.ALIGN_CENTRE) hbox2.Add(self.btn1, proportion = 1, flag = wx.ALIGN_CENTRE, border = 10) vbox.Add(hbox2, flag = wx.ALIGN_CENTRE) vbox.Add(hbox1, proportion = 1, flag = wx.ALIGN_CENTRE) pnl.SetSizer(vbox) self.Centre() self.Show(True) def OnClick(self, e): dlg = wx.FontDialog(self,wx.FontData()) if dlg.ShowModal() == wx.ID_OK: data = dlg.GetFontData() font = data.GetChosenFont() self.text.SetFont(font) dlg.Destroy() ex = wx.App() Mywin(None,'FileDialog Demo - www.yiibai.com') ex.MainLoop()
上面的代码产生下面的输出 -