Question

I am new to Python and this is my very first attempt to built my very own Calculator application using wxPython.

import wx

########################################################################
class PyCalc(wx.Frame):
    """
    Python Calculator using wxPython
    """

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""        
        wx.Frame.__init__(self, None, wx.ID_ANY, 
                          "Py Calculator",
                          size=(320,240)
                          )
        panel = wx.Panel(self)

        button1 = wx.Button(panel, label="1")
        button1.Bind(wx.EVT_BUTTON, lambda evt, name=button1.GetLabel(): self.onButton(evt, name))
        button2 = wx.Button(panel, label="2")
        button2.Bind(wx.EVT_BUTTON, lambda evt, name=button2.GetLabel(): self.onButton(evt, name))
        button3 = wx.Button(panel, label="3")
        button3.Bind(wx.EVT_BUTTON, lambda evt, name=button3.GetLabel(): self.onButton(evt, name))
        button4 = wx.Button(panel, label="4")
        button4.Bind(wx.EVT_BUTTON, lambda evt, name=button4.GetLabel(): self.onButton(evt, name))
        button5 = wx.Button(panel, label="5")
        button5.Bind(wx.EVT_BUTTON, lambda evt, name=button5.GetLabel(): self.onButton(evt, name))
        button6 = wx.Button(panel, label="6")
        button6.Bind(wx.EVT_BUTTON, lambda evt, name=button6.GetLabel(): self.onButton(evt, name))
        button7 = wx.Button(panel, label="7")
        button7.Bind(wx.EVT_BUTTON, lambda evt, name=button7.GetLabel(): self.onButton(evt, name))
        button8 = wx.Button(panel, label="8")
        button8.Bind(wx.EVT_BUTTON, lambda evt, name=button8.GetLabel(): self.onButton(evt, name))
        button9 = wx.Button(panel, label="9")
        button9.Bind(wx.EVT_BUTTON, lambda evt, name=button9.GetLabel(): self.onButton(evt, name))
        button10 = wx.Button(panel, label="10")
        button10.Bind(wx.EVT_BUTTON, lambda evt, name=button10.GetLabel(): self.onButton(evt, name))

        sizer = wx.GridSizer(rows = 3, cols=3, hgap =5,vgap =5) 
        sizer.Add(button1)
        sizer.Add(button2)
        sizer.Add(button3)
        sizer.Add(button4)
        sizer.Add(button5)
        sizer.Add(button6)
        sizer.Add(button7)
        sizer.Add(button8)
        sizer.Add(button9)
        sizer.Add(button10)

        panel.SetSizer(sizer)

    #----------------------------------------------------------------------
    def onButton(self, event, buttonLabel):
        """"""
        print "You pressed the %s button!" % buttonLabel

# Run the program
if __name__ == "__main__":
    app = wx.PySimpleApp()
    frame = PyCalc().Show()
    app.MainLoop()

My question is what should I use for that display box in the calculator which displays what the user types in? What is in in WxPython?

Was it helpful?

Solution

wx.StaticText seems appropriate for this case.

self.display = wx.StaticText(panel, label='0')
sizer.Add(self.display)

You can change the text using SetLabel method or Label attribute:

self.display.SetLabel('calculated_value')
# or
self.display.Label = 'calculated_value'
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top