Python体验(10)-图形界面之计算器

Posted 许明会的计算机技术主页

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python体验(10)-图形界面之计算器相关的知识,希望对你有一定的参考价值。

 

 

  1 import wx
  2 class Form(wx.Frame):
  3     def __init__( self, parent, id, title ):
  4         wx.Frame.__init__(self,parent,id,title,wx.DefaultPosition,wx.Size(300, 250))
  5         self.formula = False
  6         menuBar = wx.MenuBar()
  7         mnuFile = wx.Menu()
  8         mnuFile.Append( 22, &Quit, Exit Calculator )
  9         menuBar.Append( mnuFile, &File )
 10         wx.EVT_MENU( self, 22, self.OnClose )
 11         self.SetMenuBar( menuBar )
 12 
 13         self.display = wx.TextCtrl(self, -1, ‘‘, style=wx.TE_RIGHT)
 14         gs = wx.GridSizer(5, 4, 3, 3)
 15         gs.AddMany(
 16             [
 17                 (wx.Button(self, 12, -), 0, wx.EXPAND),
 18                 (wx.Button(self, 20, Cls), 0, wx.EXPAND),
 19                 (wx.Button(self, 21, Bck), 0, wx.EXPAND),
 20                 (wx.StaticText(self, -1, ‘‘), 0, wx.EXPAND),
 21                 (wx.Button(self, 22, Close), 0, wx.EXPAND),
 22                 (wx.Button(self, 1, 7), 0, wx.EXPAND),
 23                 (wx.Button(self, 2, 8), 0, wx.EXPAND),
 24                 (wx.Button(self, 3, 9), 0, wx.EXPAND),
 25                 (wx.Button(self, 4, /), 0, wx.EXPAND),
 26                 (wx.Button(self, 5, 4), 0, wx.EXPAND),
 27                 (wx.Button(self, 6, 5), 0, wx.EXPAND),
 28                 (wx.Button(self, 7, 6), 0, wx.EXPAND),
 29                 (wx.Button(self, 8, *), 0, wx.EXPAND),
 30                 (wx.Button(self, 10, 2), 0, wx.EXPAND),
 31                 (wx.Button(self, 11, 3), 0, wx.EXPAND),
 32                 (wx.Button(self, 9, 1), 0, wx.EXPAND),
 33                 (wx.Button(self, 16, +), 0, wx.EXPAND),
 34                 (wx.Button(self, 15, =), 0, wx.EXPAND),
 35                 (wx.Button(self, 14, .), 0, wx.EXPAND),
 36                 (wx.Button(self, 13, 0), 0, wx.EXPAND)
 37             ]
 38         )
 39         sizer = wx.BoxSizer( wx.VERTICAL )
 40         sizer.Add(self.display, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 4)
 41         sizer.Add(gs, 1, wx.EXPAND)
 42         self.SetSizer(sizer)
 43         self.Centre()
 44 
 45         wx.EVT_BUTTON(self, 20, self.OnClear)
 46         wx.EVT_BUTTON(self, 21, self.OnBackspace)
 47         wx.EVT_BUTTON(self, 22, self.OnClose)
 48         wx.EVT_BUTTON(self, 1, self.OnNumber)
 49         wx.EVT_BUTTON(self, 2, self.OnNumber)
 50         wx.EVT_BUTTON(self, 3, self.OnNumber)
 51         wx.EVT_BUTTON(self, 4, self.OnFormula)
 52         wx.EVT_BUTTON(self, 5, self.OnNumber)
 53         wx.EVT_BUTTON(self, 6, self.OnNumber)
 54         wx.EVT_BUTTON(self, 7, self.OnNumber)
 55         wx.EVT_BUTTON(self, 8, self.OnFormula)
 56         wx.EVT_BUTTON(self, 9, self.OnNumber)
 57         wx.EVT_BUTTON(self, 10, self.OnNumber)
 58         wx.EVT_BUTTON(self, 11, self.OnNumber)
 59         wx.EVT_BUTTON(self, 12, self.OnFormula)
 60         wx.EVT_BUTTON(self, 13, self.OnNumber)
 61         wx.EVT_BUTTON(self, 14, self.OnFormula)
 62         wx.EVT_BUTTON(self, 15, self.OnEqual)
 63         wx.EVT_BUTTON(self, 16, self.OnFormula)
 64 
 65     def OnClear(self, event):
 66         self.display.Clear()
 67     def OnBackspace(self, event):
 68         formula = self.display.GetValue()
 69         self.display.Clear()
 70         self.display.SetValue(formula[:-1])
 71     def OnClose(self, event):
 72         self.Close()
 73     def OnEqual(self,event):
 74         if self.formula:
 75             return
 76         formula = self.display.GetValue()
 77         self.formula = True
 78         try:
 79             self.display.Clear()
 80             output = eval(formula)
 81             self.display.AppendText(str(output))
 82         except StandardError:
 83             self.display.AppendText("Error")
 84 
 85     def OnFormula(self,event):
 86         if self.formula:
 87             return
 88         self.display.AppendText(event.EventObject.LabelText)
 89 
 90     def OnNumber(self,event):
 91         if self.formula:
 92             self.display.Clear()
 93             self.formula=False
 94         self.display.AppendText(event.EventObject.LabelText)
 95 
 96 class MyApp(wx.App):
 97     def OnInit(self):
 98         frame = Form(None, -1, "Phoenix Caculator")
 99         frame.Show(True)
100         self.SetTopWindow(frame)
101         return True
102 
103 app = MyApp(0)
104 app.MainLoop()
import wx
class Form(wx.Frame):
    def __init__( self, parent, id, title ):
        wx.Frame.__init__(self,parent,id,title,wx.DefaultPosition,wx.Size(300, 250))
        self.formula = False
        menuBar = wx.MenuBar()
        mnuFile = wx.Menu()
        mnuFile.Append( 22, &Quit, Exit Calculator )
        menuBar.Append( mnuFile, &File )
        wx.EVT_MENU( self, 22, self.OnClose )
        self.SetMenuBar( menuBar )

        self.display = wx.TextCtrl(self, -1, ‘‘, style=wx.TE_RIGHT)
        gs = wx.GridSizer(5, 4, 3, 3)
        gs.AddMany(
            [
                (wx.Button(self, 12, -), 0, wx.EXPAND),
                (wx.Button(self, 20, Cls), 0, wx.EXPAND),
                (wx.Button(self, 21, Bck), 0, wx.EXPAND),
                (wx.StaticText(self, -1, ‘‘), 0, wx.EXPAND),
                (wx.Button(self, 22, Close), 0, wx.EXPAND),
                (wx.Button(self, 1, 7), 0, wx.EXPAND),
                (wx.Button(self, 2, 8), 0, wx.EXPAND),
                (wx.Button(self, 3, 9), 0, wx.EXPAND),
                (wx.Button(self, 4, /), 0, wx.EXPAND),
                (wx.Button(self, 5, 4), 0, wx.EXPAND),
                (wx.Button(self, 6, 5), 0, wx.EXPAND),
                (wx.Button(self, 7, 6), 0, wx.EXPAND),
                (wx.Button(self, 8, *), 0, wx.EXPAND),
                (wx.Button(self, 10, 2), 0, wx.EXPAND),
                (wx.Button(self, 11, 3), 0, wx.EXPAND),
                (wx.Button(self, 9, 1), 0, wx.EXPAND),
                (wx.Button(self, 16, +), 0, wx.EXPAND),
                (wx.Button(self, 15, =), 0, wx.EXPAND),
                (wx.Button(self, 14, .), 0, wx.EXPAND),
                (wx.Button(self, 13, 0), 0, wx.EXPAND)
            ]
        )
        sizer = wx.BoxSizer( wx.VERTICAL )
        sizer.Add(self.display, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 4)
        sizer.Add(gs, 1, wx.EXPAND)
        self.SetSizer(sizer)
        self.Centre()

        wx.EVT_BUTTON(self, 20, self.OnClear)
        wx.EVT_BUTTON(self, 21, self.OnBackspace)
        wx.EVT_BUTTON(self, 22, self.OnClose)
        wx.EVT_BUTTON(self, 1, self.OnNumber)
        wx.EVT_BUTTON(self, 2, self.OnNumber)
        wx.EVT_BUTTON(self, 3, self.OnNumber)
        wx.EVT_BUTTON(self, 4, self.OnFormula)
        wx.EVT_BUTTON(self, 5, self.OnNumber)
        wx.EVT_BUTTON(self, 6, self.OnNumber)
        wx.EVT_BUTTON(self, 7, self.OnNumber)
        wx.EVT_BUTTON(self, 8, self.OnFormula)
        wx.EVT_BUTTON(self, 9, self.OnNumber)
        wx.EVT_BUTTON(self, 10, self.OnNumber)
        wx.EVT_BUTTON(self, 11, self.OnNumber)
        wx.EVT_BUTTON(self, 12, self.OnFormula)
        wx.EVT_BUTTON(self, 13, self.OnNumber)
        wx.EVT_BUTTON(self, 14, self.OnFormula)
        wx.EVT_BUTTON(self, 15, self.OnEqual)
        wx.EVT_BUTTON(self, 16, self.OnFormula)

    def OnClear(self, event):
        self.display.Clear()
    def OnBackspace(self, event):
        formula = self.display.GetValue()
        self.display.Clear()
        self.display.SetValue(formula[:-1])
    def OnClose(self, event):
        self.Close()
    def OnEqual(self,event):
        if self.formula:
            return
        formula = self.display.GetValue()
        self.formula = True
        try:
            self.display.Clear()
            output = eval(formula)
            self.display.AppendText(str(output))
        except StandardError:
            self.display.AppendText("Error")

    def OnFormula(self,event):
        if self.formula:
            return
        self.display.AppendText(event.EventObject.LabelText)

    def OnNumber(self,event):
        if self.formula:
            self.display.Clear()
            self.formula=False
        self.display.AppendText(event.EventObject.LabelText)

class MyApp(wx.App):
    def OnInit(self):
        frame = Form(None, -1, "Phoenix Caculator")
        frame.Show(True)
        self.SetTopWindow(frame)
        return True

app = MyApp(0)
app.MainLoop()

 

以上是关于Python体验(10)-图形界面之计算器的主要内容,如果未能解决你的问题,请参考以下文章

Python体验(08)-图形界面之工具栏和状态栏

Openstack 实战讲解之-----10-图形界面管理安装配置(Dashboard)

Python100天学习笔记Day10 图形用户界面和游戏开发

Python100天学习笔记Day10 图形用户界面和游戏开发

python怎么用tkinter

python之tkinter图形界面