1.對話框
①簡單消息框
MessageDialog
②檔案對話本框
FileDialog
③字型對話框
FontDialog
④顔色對話框
ColorDialog
2.簡單消息框
①建立打開消息框的菜單項
self.menu4=wx.Menu()
self.menuMessage=self.menu4.Append(401,'Message')
self.menuBar1.Append(self.menu4, '&Message')
#打開消息對話框
#wx.EvtHandler.Bind(self,wx.EVT_MENU,self.OnMessage,401)
wx.EVT_MENU(self,401,self.OnMessage) #self.Bind(wx.EVT_MENU(self,401,self.OnMessage),self.OnMessage)
②綁定函數
def OnMessage(self,event):
dlg=wx.MessageDialog(self,"Hello",'Caution',wx.CANCEL|wx.OK|wx.ICON_ERROR)
if dlg.ShowModal()==wx.ID_OK:
print('Ok')
dlg.Destroy()
③運作結果
3.檔案對話框
①建立打開檔案對話框的菜單項
#建立檔案操作菜單
self.menu1=wx.Menu()
self.menuOpen=self.menu1.Append(101,'Open')
self.menuSave=self.menu1.Append(102,'Save')
self.menuSaveAs=self.menu1.Append(103,'SaveAs')
#間隔符
self.menu1.AppendSeparator()
self.menuClose=self.menu1.Append(104,'Close')
self.menuBar1.Append(self.menu1, '&File')
#打開檔案
#self.Bind(wx.EVT_MENU,self.OnOpen)
wx.EVT_MENU(self,101,self.OnOpen)
#儲存檔案
wx.EVT_MENU(self,102,self.OnSave)
#self.Bind(wx.EVT_MENU,self.OnSave)
#設定儲存格式
wx.EVT_MENU(self,103,self.OnSaveAs)
②綁定檔案操作函數
#檔案框處理
def OnOpen(self,event):
file_wildcard="Python files(*.py)|*.py|All files(*.*)|*.*"
dlg=wx.FileDialog(self,"Open file",os.getcwd(),style=wx.FD_OPEN,wildcard=file_wildcard)
if dlg.ShowModal()==wx.ID_OK:
self.filename=dlg.GetPath()
self.SetTitle(self.Title+'-----'+self.filename)
dlg.Destroy()
def OnSave(self,event):
if not self.filename:
self.OnSaveAs(event)
else:
self.SaveFile()
def SaveFile(self):
if self.filename:
f=open(self.filename,'w')
f.close()
def OnSaveAs(self,event):
file_wildcard="Python files(*.py)|*.py|All files(*.*)|*.*"
dlg=wx.FileDialog(self,"Save file as...",os.getcwd(),style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT,wildcard=file_wildcard)
if dlg.ShowModal()==wx.ID_OK:
filename=dlg.GetPath()
if not os.path.splitext(filename)[1]:
filename=filename+".py"
self.filename=filename
self.SaveFile()
self.SetTitle(self.Title+'------'+self.filename)
dlg.Destroy()
#def OnClose(self,event):
③運作結果
4.顔色對話框
①建立打開顔色對話框的菜單項
self.menu2=wx.Menu()
self.menuColor=self.menu2.Append(201,'Color')
self.menuBar1.Append(self.menu2, '&Color')
#打開顔色對話框
wx.EVT_MENU(self,201,self.OnOpenColor)
②綁定操作函數
#顔色框
def OnOpenColor(self,event):
cd=wx.ColourDialog(self)
if cd.ShowModal()==wx.ID_OK:
print('OK')
cd.Destroy()
③運作結果
5.字型對話框
①建立打開字型對話框的菜單項
#front
self.menu3=wx.Menu()
self.menuFront=self.menu3.Append(301,'Front')
self.menuBar1.Append(self.menu3, '&Front')
#打開字型對話框
#self.Bind(wx.EVT_MENU,self.OpenFront)
wx.EVT_MENU(self,301,self.OpenFront)
#wx.EvtHandler.Bind(self,self.menuFront,self.OpenFront)
②綁定操作函數
#文字框
def OpenFront(self,event):
fd = wx.FontDialog(self)
if fd.ShowModal() == wx.ID_OK:
print('OK')
fd.Destroy()
③運作結果
6.主函數
if __name__=='__main__':
print(help(wx.EvtHandler.Bind))
app=wx.App()
frame=myFrame(None)
frame.Show()
app.MainLoop()
學習筆記
1.在添加對話框時需要初始化;
2.檔案對話框初始化需要通過os,getcwd()擷取目前路徑;
3.在初始化對話框後需要通過判斷來使得對話框可視化:
4.在使用完對話框後需要銷毀: