zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    Thymeleaf+Spring使用自己的工具类
    bootstrap 响应式布局
    bootstrap 流布局
    bootstrap 布局
    bootstrap 新建网页
    quick 定时更新函数
    acm hdoj 1157
    acm hdoj 今年暑假不ac
    quick removeTileMaptile
    quick schedule 的添加和移除
  • 原文地址:https://www.cnblogs.com/flaaash/p/5300408.html
Copyright © 2011-2022 走看看