您的位置:首页 > 编程语言 > Python开发

python 学习八

2016-10-01 01:24 183 查看
这个章节学习的是图形界面的东西,这是比较好玩的.

一个简单的窗口

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
4000
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 = (12
c41e
0,-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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: