1

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?

1 Answer 1

1

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'
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.