这个章节学习的是图形界面的东西,这是比较好玩的.
一个简单的窗口
import wx
class MyFrame(wx.Frame):
def __init__ (self):
wx.Frame.__init__(self,None,-1,'666',size=(400,200))
self.Show()
app = wx.PySimpleApp()
myFrame = MyFrame()
app.MainLoop()
加入了面板和鼠标事件
import wx
class MyFrame(wx.Frame):
def __init__ (self):
wx.Frame.__init__(self,None,-1,'测试位置',size=(300,300))
panel = wx.Panel(self,-1)
panel.Bind(wx.EVT_MOTION,self.OnMove)
wx.StaticText(panel,-1,'鼠标当前位置为: ',pos=(10,12))
self.posCtrl=wx.TextCtrl(panel,-1,"",pos=(120,10))
def OnMove(self,event):
pos = event.GetPosition()
self.posCtrl.SetValue("%s,%s" %(pos.x,pos.y))
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show(True)
app.MainLoop();
弹出框
import wx
class App(wx.App):
def OnInit(self):
dlg = wx.MessageDialog(None,'确定要退出程序吗?','程序退出提示',wx.YES_NO)#|wx.ICON_QUESTION
result = dlg.ShowModal()
if result == wx.ID_YES:
print '你单击了是按钮'
if result == wx.ID_NO:
print '你单击了否按钮'
dlg.Destroy()
return True
if __name__ == '__main__':
app = App(False)
app.MainLoop()
选择框
import wx
class App(wx.App):
"""docstring for App"""
def OnInit(self):
dlg = wx.TextEntryDialog(None,"你最喜欢的一种语言?","一个问题","这里是默认值?")
if dlg.ShowModal() == wx.ID_OK:
print dlg.GetValue()
else:
print 'what the fuck!'
return True
if __name__ == '__main__':
app = App(False)
app.MainLoop()
文件的选择
import wx
import os
class App(wx.App):
def OnInit(self):
fileFilter="Python source(*.py)|*.py|All files(*.*)|*.*"
dlg = wx.FileDialog(None,"选择文件啥",os.getcwd(),"",fileFilter,wx.OPEN)
dlg.ShowModal()
dlg.Destroy()
return True
if __name__ == "__main__":
app = App()
app.MainLoop()
工具栏
import wx
import wx.py.images as images
class ToolbarFrame(wx.Frame):
def __init__ (self,parent,id):
wx.Frame.__init__(self,parent,id,'工具栏',size=(500,300))
panel = wx.Panel(self)
panel.SetBackgroundColour('Red')
toolbar = self.CreateToolBar()
toolbar.AddSimpleTool(wx.NewId(),images.getPyBitmap(),"NewTest....")
toolbar.Realize()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ToolbarFrame(parent = None,id = -1)
frame.Show()
app.MainLoop()
状态栏
import wx
class StatusbarFrame(wx.Frame):
def __init__ (self,parent,id):
wx.Frame.__init__(self,parent,id,'状态栏',size=(500,200))
panel = wx.Panel(self)
panel.SetBackgroundColour('Pink')
statusbar = self.CreateStatusBar()
statusbar.SetStatusText("状态栏信息")
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = StatusbarFrame(parent = None,id = -1)
frame.Show()
app.MainLoop()
对话框
import wx
class ToolbarFrame(wx.Frame):
def __init__ (self,parent,id):
wx.Frame.__init__(self,parent,id,'gongjulan',size=(600,300))
panel = wx.Panel(self)
panel.SetBackgroundColour("Pink")
toolbar = self.CreateToolBar()
toolbar.AddSimpleTool(wx.NewId(),wx.Image('ico/xin.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(),"New")
toolbar.AddSimpleTool(wx.NewId(),wx.Image('ico/save.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(),"Save")
toolbar.AddSimpleTool(wx.ID_EXIT,wx.Image('ico/abc.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(),"Delete")
toolbar.AddSimpleTool(wx.ID_DELETE,wx.Image('ico/exit.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(),"Exit")
toolbar.SetToolBitmapSize(wx.Size(10,10))
toolbar.Realize()
statusbar = self.CreateStatusBar()
statusbar.SetStatusText("xxxyyy")
self.Bind(wx.EVT_TOOL,self.OnExit,id = wx.ID_EXIT)
self.Bind(wx.EVT_TOOL,self.OnDelete,id = wx.ID_DELETE)
def OnExit(self,event):
dlg = wx.MessageDialog(None,'确定要退出程序吗?','程序退出提示',wx.YES_NO|wx.ICON_QUESTION)
result = dlg.ShowModal()
if result == wx.ID_YES:
self.Close(True)
dlg.Destroy()
def OnDelete(self,event):
dlg = wx.MessageDialog(None,'确定要删除该条数据吗?','删除数据提示',wx.YES_NO|wx.ICON_QUESTION)
result = dlg.ShowModal()
if result == wx.ID_YES:
mydialog = MyDialog(parent = None , id = -1,title = '删除')
dlg.Destroy()
class MyDialog(wx.Dialog):
def __init__ (self,parent,id,title):
wx.Dialog.__init__(self,parent,id,title,size=(200,200))
self.panel = wx.Panel(self)
self.OkBtn = wx.Button(self,10,'确定',pos=(50,100),size=(80,30))
self.Bind(wx.EVT_BUTTON,self.CloseDlg,self.OkBtn)
self.Show()
def CloseDlg(self,event):
self.Close()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ToolbarFrame(parent = None,id = -1)
frame.Show()
app.MainLoop()
文本框
#文本框
import wx
class StaticTextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Static Text Example',size=(300,200))
panel = wx.Panel(self,-1)
text = wx.StaticText(panel,-1,'静态文本框',(70,50),(200,90),wx.ALIGN_CENTER)
font = wx.Font(14,wx.DEFAULT,wx.ITALIC,wx.NORMAL,True)
text.SetFont(font)
text.SetForegroundColour('red')
text.SetBackgroundColour('yellow')
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = StaticTextFrame()
frame.Show()
app.MainLoop()
多行文本框
import wx
class MultiTextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,"用户注册界面",size=(500,400))
panel = wx.Panel(self,-1)
# 创建一个静态文本输入框
labName = wx.StaticText(panel,-1,'用户名',pos=(50,10))
# 创建一个普通文本输入框
self.inputText = wx.TextCtrl(panel,-1,'',pos=(120,10),size=(150,-1),style=wx.TE_LEFT|wx.TE_PROCESS_TAB)
self.inputText.SetInsertionPoint(0)
# 静态文本框
labPwd = wx.StaticText(panel,-1,'密码',pos=(50,50))
# 创建一个密码输入框
self.pwdText = wx.TextCtrl(panel,-1,'',pos=(120,50),size=(150,-1),style = wx.TE_PASSWORD|wx.TE_PROCESS_ENTER)
# 绑定回车事件
self.Bind(wx.EVT_TEXT_ENTER,self.OnLostFocus,self.pwdText)
# 普通多文本输入框
multiLabel = wx.StaticText(panel,-1,'网络服务协议:',pos=(40,90))
multiText = wx.TextCtrl(panel,-1,"本协议由您xxx...",pos=(120,90),size=(300,100),style=wx.TE_MULTILINE)
# 富文本多行输入框
richLabel = wx.StaticText(panel,-1,'网络服务协议:',pos=(40,210))
richText = wx.TextCtrl(panel,-1,"本协议由您yyy",pos=(120,210),size=(300,100),style=wx.TE_MULTILINE|wx.TE_RICH2)#style控件
# 设置控件样式
richText.SetStyle(2,6,wx.TextAttr("white","black"))
points = richText.GetFont().GetPointSize()
# 创建一个字体样式
f = wx.Font(points+3,wx.ROMAN,wx.ITALIC,wx.BOLD,True)
# 用创建的字体设置文本样式
richText.SetStyle(8,14,wx.TextAttr("blue",wx.NullColor,f))
def OnLostFocus(self,event):
wx.MessageBox('username:%s,password:%s',(self.inputText.GetValue(),self.pwdText.GetValue()),'admin')
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MultiTextFrame()
frame.Show(True)
app.MainLoop()
按钮
import wx
class ButtonFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'putonganniu',size=(300,100))
panel = wx.Panel(self,-1)
self.button = wx.Button(panel,-1,"确定",pos=(50,20),size=(100,30))
self.Bind(wx.EVT_BUTTON,self.OnClick,self.button)
self.button.SetDefault()
def OnClick(self,event):
self.button.SetLabel("you had done this...")
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ButtonFrame()
frame.Show()
app.MainLoop()
位图
import wx
class BitmapButtonFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'位图按钮',size=(400,200))
panel = wx.Panel(self,-1)
jpg = wx.Image("ico/image003.jpg",wx.BITMAP_TYPE_JPEG).ConvertToBitmap()
self.button = wx.BitmapButton(panel,-1,jpg,pos=(90,20),size=(200,95))
self.Bind(wx.EVT_BUTTON,self.OnClick,self.button)
self.button.SetDefault()
def OnClick(self,event):
self.Destroy()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = BitmapButtonFrame()
frame.Show()
app.MainLoop()
单选按钮
import wx
class RadioFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'danxuananniu',size=(200,150))
panel = wx.Panel(self,-1)
radioMale = wx.RadioButton(panel,-1,'男',pos=(20,20))
radioFemale = wx.RadioButton(panel,-1,'女',pos=(20,40))
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = RadioFrame()
frame.Show()
app.MainLoop()
多选按钮
import wx
class RadioBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'单选按钮的分组',size=(400,200))
panel = wx.Panel(self,-1)
langList = ['java','asp','python','ruby','mvc','c++']
wx.RadioBox(panel,-1,'你最喜欢的一种语言?',(10,10),(300,100),langList,3,wx.RA_SPECIFY_COLS)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = RadioBoxFrame()
frame.Show()
app.MainLoop()
多选框
import wx
class CheckBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'多选框',size=(400,200))
panel = wx.Panel(self,-1)
wx.StaticText(panel,-1,'你最喜欢的电影演员是:',pos=(10,10),size=(150,20))
wx.CheckBox(panel,-1,'陆毅',pos=(10,30),size=(100,20))
wx.CheckBox(panel,-1,'董洁',pos=(10,50),size=(100,20))
wx.CheckBox(panel,-1,'姜文',pos=(10,70),size=(100,20))
wx.CheckBox(panel,-1,'刘亦菲',pos=(10,90),size=(100,20))
wx.CheckBox(panel,-1,'赵薇',pos=(10,110),size=(100,20))
if __name__ == '__main__':
app = wx.PySimpleApp()
checkBox = CheckBoxFrame()
checkBox.Show()
app.MainLoop()
列表框
import wx
class ListBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'列表框',pos=(10,10),size=(300,180))
panel = wx.Panel(self,-1)
langList = ['java','ASP','.NET','ptyhon','Ruby','Flex','MVC']
self.listBox = wx.ListBox(panel,-1,(10,10),(150,120),langList,wx.LB_SINGLE)
self.listBo x.SetSelection(0)
self.Bind(wx.EVT_LISTBOX,self.OnSelected,self.listBox)
def OnSelected(self,event):
index = self.listBox.GetSelection()
wx.MessageBox(self.listBox.GetString(index),'提示')
if __name__ == '__main__':
app = wx.PySimpleApp()
box = ListBoxFrame()
box.Show()
app.MainLoop()
下拉列表
#下拉列表 Choice
import wx
class ChoiceFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'下拉列表框',size=(300,200))
panel = wx.Panel(self,-1)
langList = ['java','ASP','PYTHON','XXX']
wx.Choice(panel,-1,pos=(50,10),size=(150,100),choices = langList)
if __name__ == '__main__':
app = wx.PySimpleApp()
choices = ChoiceFrame()
choices.Show()
app.MainLoop()
可编辑的下拉框
import wx
class ChoiceFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'可编辑的下拉框',size=(300,300))
panel = wx.Panel(self,-1)
langList = ['A','B','C','D']
wx.ComboBox(panel,-1,'python',(50,10),(200,100),langList,wx.CB_DROPDOWN)
if __name__ == '__main__':
app = wx.PySimpleApp()
comboBox = ChoiceFrame()
comboBox.Show()
app.MainLoop()
GridSizer布局
import wx
class GridSizer(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title,size=(300,200))
panel = wx.Panel(self,-1)
gs = wx.GridSizer(4,4,15,15)
numList = ['Cls','Bck','','Close','7','8','9','/','4','5','6','*','1','2','3','-','0','.','=','+']
for num in numList:
btn = wx.Button(panel,id,num)
gs.Add(btn,0,0)
panel.SetSizer(gs)
self.Centre()
self.Show(True)
app = wx.App()
GridSizer(None,-1,'GridSizer')
app.MainLoop()
FlexGridSizer布局
import wx
class FlexGridSizer(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title,size=(300,200))
panel = wx.Panel(self,-1)
fgs = wx.FlexGridSizer(3,2,9,25)
title = wx.StaticText(panel,-1,'biaoti')
tcl = wx.TextCtrl(panel,-1)
fgs.Add(title,0,0)
fgs.Add(tcl,0,0)
author = wx.StaticText(panel,-1,'作者')
tc2 = wx.TextCtrl(panel,-1)
fgs.Add(author,0,0)
fgs.Add(tc2,0,0)
review = wx.StaticText(panel,-1,'内容',size=(-1,100))
tc3 = wx.TextCtrl(panel,-1,'内容',size=(-1,100))
fgs.Add(review,0,0)
fgs.Add(tc3,0,0)
panel.SetSizer(fgs)
self.Centre()
self.Show(True)
app = wx.App()
FlexGridSizer(None,-1,'cacaca')
app.MainLoop()
Grid Big布局
import wx
class OpenResource(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title,size=(400,400))
panel = wx.Panel(self,-1)
sizer = wx.GridBagSizer(4,4)
text1 = wx.StaticText(panel,-1,'Select a resource to open')
sizer.Add(text1,(0,0),flag = wx.TOP|wx.LEFT|wx.BOTTOM,border = 5)
tc = wx.TextCtrl(panel,-1)
sizer.Add(tc,(1,0),(1,3),wx.EXPAND|wx.LEFT|wx.RIGHT,5)
text2 = wx.StaticText(panel,-1,'Matching resources')
sizer.Add(text2,(2,0),flag = wx.TOP|wx.LEFT|wx.BOTTOM,border = 5)
list1 = wx.ListBox(panel,-1,style = wx.LB_ALWAYS_SB)
sizer.Add(list1,(3,0),(5,3),wx.EXPAND|wx.LEFT|wx.RIGHT,5)
text3 = wx.StaticText(panel,-1,'In Floders')
sizer.Add(text3,(8,0),flag = wx.TOP|wx.LEFT|wx.BOTTOM,border = 5)
list2 = wx.ListBox(panel,-1,style = wx.LB_ALWAYS_SB)
sizer.Add(list2,(9,0),(3,3),wx.EXPAND|wx.LEFT|wx.RIGHT,5)
cb = wx.CheckBox(panel,-1,'Show derived resources')
sizer.Add(cb,(12,0),flag = wx.LEFT|wx.RIGHT,border = 5)
buttonOk = wx.Button(panel,-1,'OK',size=(90,28))
buttonCancel = wx.Button(panel,-1,'Cancel',size=(90,28))
sizer.Add(buttonOk,(14,1))
sizer.Add(buttonCancel,(14,2),flag=wx.RIGHT|wx.BOTTOM,border=5)
help = wx.BitmapButton(panel,-1,wx.Bitmap('ico/xin.png'),style=wx.NO_BORDER)
sizer.Add(help,(14,0),flag = wx.LEFT,border = 5)
panel.SetSizer(sizer)
self.Centre()
self.Show(True)
app = wx.App()
OpenResource(None,-1,'Open Resource')
app.MainLoop()
BoxSizer布局
import wx
class Border(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title,size=(250,200))
panel = wx.Panel(self,-1)
panel.SetBackgroundColour('white')
vbox = wx.BoxSizer(wx.VERTICAL)
langList = ['java','ASP','.NET','Python','MVC']
for lang in langList:
btn = wx.Button(panel,id,lang)
vbox.Add(btn,0,wx.EXPAND|wx.ALL,2)
panel.SetSizer(vbox)
self.Centre()
self.Show(True)
app = wx.App()
Border(None,-1,'')
app.MainLoop()
各种布局一起的栗子
import wx
class FindReplace(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title,size=(255,365))
vbox_top = wx.BoxSizer(wx.HORIZONTAL)
panel = wx.Panel(self,-1)
vbox = wx.BoxSizer(wx.VERTICAL)
panel1 = wx.Panel(panel,-1)
grid1 = wx.GridSizer(2,2)
grid1.Add(wx.StaticText(panel1,-1,'Find: ',(5,5)),0,wx.ALIGN_CENTER_VERTICAL)
grid1.Add(wx.ComboBox(panel1,-1,size=(120,-1)))
grid1.Add(wx.StaticText(panel1,-1,'Replace with: ',(5,5)),0,wx.ALIGN_CENTER_VERTICAL)
grid1.Add(wx.ComboBox(panel1,-1,size=(120,-1)))
panel1.SetSizer(grid1)
vbox.Add(panel1,0,wx.BOTTOM|wx.TOP,9)
panel2 = wx.Panel(panel,-1)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
sizer21 = wx.StaticBoxSizer(wx.StaticBox(panel2,-1,'Direction'),orient = wx.VERTICAL)
sizer21.Add(wx.RadioButton(panel2,-1,'Forward',style=wx.RB_GROUP))
sizer21.Add(wx.RadioButton(panel2,-1,'Backward'))
hbox2.Add(sizer21,1,wx.RIGHT,5)
sizer22 = wx.StaticBoxSizer(wx.StaticBox(panel2,-1,'Scope'),orient = wx.VERTICAL)
sizer22.Add(wx.RadioButton(panel2,-1,'All',style=wx.RB_GROUP))
sizer22.Add(wx.RadioButton(panel2,-1,'Selected Lines'))
hbox2.Add(sizer22,1)
panel2.SetSizer(hbox2)
vbox.Add(panel2,0,wx.BOTTOM,9)
panel3 = wx.Panel(panel,-1)
sizer3 = wx.StaticBoxSizer(wx.StaticBox(panel3,-1,'Options'),orient=wx.VERTICAL)
vbox3 = wx.BoxSizer(wx.VERTICAL)
grid = wx.GridSizer(3,2,0,5)
grid.Add(wx.CheckBox(panel3,-1,'Case Sensitive'))
grid.Add(wx.CheckBox(panel3,-1,'Wrap Search'))
grid.Add(wx.CheckBox(panel3,-1,'Whole Word'))
grid.Add(wx.CheckBox(panel3,-1,'Incremental'))
vbox3.Add(grid)
vbox3.Add(wx.CheckBox(panel3,-1,'Regular expressions'))
sizer3.Add(vbox3,0,wx.TOP,4)
panel3.SetSizer(sizer3)
vbox3.Add(panel3,0,wx.BOTTOM,15)
panel4 = wx.Panel(panel,-1)
sizer4 = wx.GridSizer(2,2,2,2)
sizer4.Add(wx.Button(panel4,-1,'Find',size = (120,-1)))
sizer4.Add(wx.Button(panel4,-1,'Replace/Find',size = (120,-1)))
sizer4.Add(wx.Button(panel4,-1,'Replace',size = (120,-1)))
sizer4.Add(wx.Button(panel4,-1,'Replace All',size = (120,-1)))
panel4.SetSizer(sizer4)
vbox.Add(panel4,0,wx.BOTTOM,9)
panel5 = wx.Panel(panel,-1)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add((191,-1),1,wx.EXPAND|wx.ALIGN_RIGHT)
sizer5.Add(wx.Button(panel5,-1,'Close',size=(50,-1)))
panel5.SetSizer(sizer5)
vbox.Add(panel5,1,wx.BOTTOM,9)
vbox_top.Add(vbox,1,wx.LEFT,5)
panel.SetSizer(vbox_top)
self.Centre()
self.Show()
app = wx.App()
FindReplace(None,-1,'Find/Replace')
app.MainLoop()
菜单栏
import wx
ID_ABOUT = 101
ID_EXIT = 102
class MyFrame(wx.Frame):
def __init__(self,parent,ID,title):
wx.Frame.__init__(self,parent,ID,title,wx.DefaultPosition,wx.Size(400,150))
self.CreateStatusBar()
self.SetStatusText("666")
menuBar = wx.MenuBar()
menu = wx.Menu()
menuBar.Append(menu,"File")
menu.Append(ID_ABOUT,"About","More information about this program")
menu.AppendSeparator()
menu.Append(ID_EXIT,"EXIT","Terminate the program")
self.SetMenuBar(menuBar)
wx.EVT_MENU(self,ID_ABOUT,self.OnAbout)
wx.EVT_MENU(self,ID_EXIT,self.TimeToQuit)
def OnAbout(self,event):
dlg = wx.MessageDialog(self,"This sample","About me",wx.OK|wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()
def TimeToQuit(self,event):
self.Close(True)
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None,-1,"Hello from wxPython")
frame.Show(True)
self.SetTopWindow(frame)
return True
app = MyApp(0)
app.MainLoop()
各种菜单栏,制作EditPlus的菜单项
import wx
import os
class MainFrame(wx.Frame):
def __init__(self,parent):
wx.Frame.__init__(self,parent,-1,'EditPlus',size=(500,300))
panel = wx.Panel(self)
menuBar = wx.MenuBar() # 创建菜单栏
fileMenu = wx.Menu() #创建菜单对象
sFileMenu = wx.Menu()
sFileMenu.Append(11,'标准文本')
sFileMenu.Append(12,'HTML网页')
fileMenu.AppendMenu(-1,'新建(N)',sFileMenu) #向主菜单的新建子菜单添加菜单项
fileMenu.Append(2,'打开(O)')
wx.EVT_MENU(self,2,self.OnOpen) # 绑定打开时间
fileMenu.Append(3,'关闭(C)')
menuBar.Append(fileMenu,'文件')
fileMenu.AppendSeparator()
editMenu = wx.Menu()
editMenu.Append(4,'撤销')
editMenu.Append(5,'重做')
editMenu.Append(6,'剪切')
editMenu.Append(7,'重做')
menuBar.Append(editMenu,'编辑')
editMenu.AppendSeparator()
viewMenu = wx.Menu()
menuBar.Append(viewMenu,'视图')
self.exitMenu = wx.Menu()
self. .Append(1000,'退出')
menuBar.Append(self.exitMenu,'系统菜单')
sysMenu = wx.Menu()
subSetMenu = sysMenu.Append(1001,'打开/屏蔽菜单')
self.Bind(wx.EVT_MENU,self.OnExit,id=1000)
self.Bind(wx.EVT_MENU_HIGHLIGHT,self.OnItemSelected,id=1000)
self.Bind(wx.EVT_MENU,self.OnEnable,subSetMenu)
menuBar.Append(sysMenu,'设置')
self.SetMenuBar(menuBar)
self.Show()
def OnOpen(self,event):
filterFile = 'Python Source(*.py)|*.py|All files(*.*)|*.*'
dialog = wx.FileDialog(None,'选择文件',os.getcwd(),'',filterFile,wx.OPEN)
dialog.ShowModal()
dialog.Destroy()
def OnEnable(self,event):
menuBar = self.GetMenuBar()
enabled = menuBar.IsEnabled(1000)
self.exitMenu.Enable(1000,not enabled)
def OnExit(self,event):
self.Close()
def OnItemSelected(self,event):
item = self.GetMenuBar().FindItemById(event.GetId())
wx.MessageBox('Menu:'+item.GetText())
app = wx.PySimpleApp()
MainFrame(None).Show()
app.MainLoop()