python 学习八

这个章节学习的是图形界面的东西,这是比较好玩的.

一个简单的窗口

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星月IWJ

曾梦想杖键走天涯,如今加班又挨

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值