wx.Dialog(parent, id, title, pos, size, style)
Dialog控件的默認(rèn)外觀顯示在標(biāo)題欄中只關(guān)閉對話框。但是,它可以用下面的風(fēng)格參數(shù)的組合進(jìn)行定制?
| S.N. | 參數(shù) & 描述 |
|---|---|
| 1 |
wx.CAPTION
對話框的文字說明
|
| 2 |
wx.DEFAULT_DIALOG_STYLE
相當(dāng)于wxCAPTION,wxCLOSE_BOX和wxSYSTEM_MENU的組合
|
| 3 |
wx.RESIZE_BORDER
顯示可調(diào)框架窗口的大小
|
| 4 |
wxSYSTEM_MENU
顯示系統(tǒng)菜單
|
| 5 |
wx.CLOSE_BOX
框架(frame)上顯示一個(gè)關(guān)閉
|
| 6 |
wx.MAXIMIZE_BOX
在對話框中顯示一個(gè)最大化框
|
| 7 |
wx.MINIMIZE_BOX
在對話框中顯示一個(gè)最小化框(frame)
|
| 8 |
wx.STAY_ON_TOP
確保對話框停留在所有其他窗口的頂部
|
| 9 |
wx.DIALOG_NO_PARENT
為防止產(chǎn)生無看管對話框。不推薦用于模態(tài)對話框
|
| S.N. |
事件和說明
|
|---|---|
| 1 |
EVT_CLOSE
當(dāng)用戶或編程對話框的關(guān)閉
|
| 2 |
EVT_INIT_DIALOG When the dialog is being initialized |
如上所述,對話的目的是收集數(shù)據(jù)并返回到父窗口。然而,一些有用的方法可用于 Dialog類。
| S.N. |
方法和說明
|
|---|---|
| 1 |
DoOK()
當(dāng)對話框中的OK按鈕被按下時(shí)調(diào)用
|
| 2 |
ShowModal()
顯示了在應(yīng)用程序模態(tài)方式的對話框
|
| 3 |
ShowWindowModal()
對話框只頂層父窗口的模式
|
| 4 |
EndModal()
ShowModal調(diào)用傳遞值結(jié)束一個(gè)對話框模式
|
一個(gè)預(yù)配置的對話框是MessageDialog。它用于顯示的一條或多條線用具有標(biāo)準(zhǔn)ID的按鈕的消息。 下面是對MessageDialog標(biāo)準(zhǔn)按鈕選擇列表。
| S.N. |
按鈕和說明
|
|---|---|
| 1 |
wx.OK
顯示OK按鈕
|
| 2 |
wx.CANCEL
顯示取消(Cancel)按鈕
|
| 3 |
wx.YES_NO
顯示“是”,“否”按鈕
|
| 4 |
wx.YES_DEFAULT
使Yes按鈕為默認(rèn)
|
| 5 |
wx.NO_DEFAULT 使No按鈕為默認(rèn) |
| 6 |
wx.ICON_EXCLAMATION
顯示警告圖標(biāo)
|
| 7 |
wx.ICON_ERROR
顯示錯(cuò)誤圖標(biāo)
|
| 8 |
wx.ICON_HAND
同wx.ICON_ERROR
|
| 9 |
wx.ICON_INFORMATION
顯示一個(gè)信息圖標(biāo)
|
| 10 |
wx.ICON_QUESTION
顯示一個(gè)問題圖標(biāo)
|
wx.MessageDialog(parent, message, caption, style, pos)
一個(gè)或多個(gè)消息參數(shù)要顯示文本的行,文字說明顯示在標(biāo)題欄。默認(rèn)style參數(shù)是wx.OK| wx.ECNRE。 其他樣式style參數(shù)允許消息框進(jìn)行定制。
下面給出的是對話的模式和無模式的行為簡單的演示。父窗口是wx.Frame對象帶有兩個(gè)按鈕。Click事件的第一個(gè)按鈕將顯示在模態(tài)的方式的對話框。因此,防止父窗口上的任何操作,直到對話框關(guān)閉。第二個(gè)按鈕,將顯示一個(gè)無模式對話框,這并不妨礙訪問父窗口。第三個(gè)按鈕會(huì)顯示一個(gè)消息框。
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(parent, id, message, caption, value, style, pos)
在對話窗口傳遞的消息參數(shù)要顯示的文字。caption 參數(shù)是要顯示在標(biāo)題欄的字符串。在文本框中默認(rèn)字符串值value參數(shù)。TextCtrl在對話框可以設(shè)置顯示密碼字符(wx.TE_PASSWORD)和/或多行(wx.TE_MULTILINE)。
| S.N. |
方法和說明
|
|---|---|
| 1 |
SetMaxLength()
設(shè)置用戶可以輸入到文本框最大字符數(shù)
|
| 2 |
SetValue()
設(shè)置文本框的值編程
|
| 3 |
GetValue()
返回該文本框的內(nèi)容
|
| 4 |
ShowModal()
顯示對話框模態(tài)。返回 wx.ID_OK 如果用戶確認(rèn)輸入,以及 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()
此類表示一個(gè)文件選擇對話框。它使用戶可以瀏覽文件系統(tǒng)并選擇要打開文件或保存。對話框的外觀是由操作系統(tǒng)特定的。
wx.FileDialog(parent, message, DefaultDir, DefaultFile, wildcard, style, pos, size)
該消息表示將要顯示的文本。 DefaultDir是初始目錄。一個(gè)或多個(gè)類型的文件可以被設(shè)置為通過通配符參數(shù)所表示的文件的過濾器。
| S.N. |
參數(shù)和說明
|
|---|---|
| 1 |
wx.FD_DEFAULT_STYLE
相當(dāng)于wxFD_OPEN
|
| 2 |
wx.FD_OPEN
這是一個(gè)打開的對話框;該對話框的默認(rèn)按鈕的標(biāo)簽是“打開”
|
| 3 |
wx.FD_SAVE
這是一個(gè)保存對話框;該對話框的默認(rèn)按鈕的標(biāo)簽是“保存”
|
| 4 |
wx.FD_OVERWRITE_PROMPT
對于只保存對話框:提示進(jìn)行確認(rèn),如果一個(gè)文件將被覆蓋
|
| 5 |
wx.FD_MULTIPLE
僅適用于打開的對話框:允許選擇多個(gè)文件
|
| 6 |
wx.FD_CHANGE_DIR
更改當(dāng)前工作目錄到用戶選擇的文件是目錄
|
| S.N. |
函數(shù)與說明
|
|---|---|
| 1 |
GetDirectory() 返回默認(rèn)目錄 |
| 2 |
GetFileName() 返回默認(rèn)文件名 |
| 3 |
GetPath()
返回選定文件的完整路徑
|
| 4 |
SetDirectory() 設(shè)置默認(rèn)目錄 |
| 5 |
SetFilename() 設(shè)置默認(rèn)文件 |
| 6 |
SetPath() 設(shè)置文件路徑 |
| 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()函數(shù)顯示一個(gè)FileDialog的打開模式。其選擇返回為dlg。通過GetPath()函數(shù)獲得的選定文件和它的內(nèi)容顯示在父窗口的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()



這個(gè)類的對象是一個(gè)字體選擇對話框。這個(gè)對話框的外觀也為操作系統(tǒng)特有的。屬性,例如名稱,大小,權(quán)重等。所選字體的形式返回作為此對話框的返回值。
wx.FontDialog(pa