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.xuhuhu.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.xuhuhu.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.xuhuhu.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.xuhuhu.com') ex.MainLoop()
上面的代碼產生下麵的輸出 -