example4.py

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

PY
93
字号
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()    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 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)        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 + -
显示快捷键?