example5.py

来自「wxPython的基本示例程序」· Python 代码 · 共 133 行

PY
133
字号
import wxfrom example1 import SketchWindowclass SketchFrame(wx.Frame):    def __init__(self, parent):        wx.Frame.__init__(self, parent, -1, "Sketch Frame",                size=(800,600))        self.sketch = SketchWindow(self, -1)        self.sketch.Bind(wx.EVT_MOTION, self.OnSketchMotion)        self.initStatusBar()        self.createMenuBar()        self.createToolBar()    def initStatusBar(self):        self.statusbar = self.CreateStatusBar()        self.statusbar.SetFieldsCount(3)        self.statusbar.SetStatusWidths([-1, -2, -3])    def OnSketchMotion(self, event):        self.statusbar.SetStatusText("Pos: %s" %                str(event.GetPositionTuple()), 0)        self.statusbar.SetStatusText("Current Pts: %s" %                len(self.sketch.curLine), 1)        self.statusbar.SetStatusText("Line Count: %s" %                len(self.sketch.lines), 2)        event.Skip()    def menuData(self):        return [("&File", (                    ("&New", "New Sketch file", self.OnNew),                    ("&Open", "Open sketch file", self.OnOpen),                    ("&Save", "Save sketch file", self.OnSave),                    ("", "", ""),                    ("&Color", (                        ("&Black", "", self.OnColor, wx.ITEM_RADIO),                        ("&Red", "", self.OnColor, wx.ITEM_RADIO),                        ("&Green", "", self.OnColor, wx.ITEM_RADIO),                        ("&Blue", "", self.OnColor, wx.ITEM_RADIO))),                    ("", "", ""),                    ("&Quit", "Quit", self.OnCloseWindow)))]    def createMenuBar(self):        menuBar = wx.MenuBar()        for eachMenuData in self.menuData():            menuLabel = eachMenuData[0]            menuItems = eachMenuData[1]            menuBar.Append(self.createMenu(menuItems), menuLabel)        self.SetMenuBar(menuBar)    def createMenu(self, menuData):        menu = wx.Menu()        for eachItem in menuData:            if len(eachItem) == 2:                label = eachItem[0]                subMenu = self.createMenu(eachItem[1])                menu.AppendMenu(wx.NewId(), label, subMenu)            else:                self.createMenuItem(menu, *eachItem)        return menu    def createMenuItem(self, menu, label, status, handler, kind=wx.ITEM_NORMAL):        if not label:            menu.AppendSeparator()            return        menuItem = menu.Append(-1, label, status, kind)        self.Bind(wx.EVT_MENU, handler, menuItem)    def createToolBar(self):        toolbar = self.CreateToolBar()        for each in self.toolbarData():            self.createSimpleTool(toolbar, *each)        toolbar.AddSeparator()        for each in self.toolbarColorData():            self.createColorTool(toolbar, each)        toolbar.Realize()    def createSimpleTool(self, toolbar, label, filename, help, handler):        if not label:            toolbar.AddSeparator()            return        bmp = wx.Image(filename, wx.BITMAP_TYPE_BMP).ConvertToBitmap()        tool = toolbar.AddSimpleTool(-1, bmp, label, help)        self.Bind(wx.EVT_MENU, handler, tool)    def toolbarData(self):        return (("New", "new.bmp", "Create new sketch", self.OnNew),                ("", "", "", ""),                ("Open", "open.bmp", "Open existing sketch", self.OnOpen),                ("Save", "save.bmp", "Save existing sketch", self.OnSave))    def createColorTool(self, toolbar, color):        bmp = self.MakeBitmap(color)        tool = toolbar.AddRadioTool(-1, bmp, shortHelp=color)        self.Bind(wx.EVT_MENU, self.OnColor, tool)    def MakeBitmap(self, color):        bmp = wx.EmptyBitmap(16, 15)        dc = wx.MemoryDC()        dc.SelectObject(bmp)        dc.SetBackground(wx.Brush(color))        dc.Clear()        dc.SelectObject(wx.NullBitmap)        return bmp    def toolbarColorData(self):        return ("Black", "Red", "Green", "Blue")    def OnNew(self, event): pass    def OnOpen(self, event): pass    def OnSave(self, event): pass    def OnColor(self, event):        menubar = self.GetMenuBar()        itemId = event.GetId()        item = menubar.FindItemById(itemId)        if not item:            toolbar = self.GetToolBar()            item = toolbar.FindById(itemId)            color = item.GetShortHelp()        else:            color = item.GetLabel()        self.sketch.SetColor(color)    def OnCloseWindow(self, event):        self.Destroy()if __name__ == '__main__':    app = wx.PySimpleApp()    frame = SketchFrame(None)    frame.Show(True)    app.MainLoop()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?