First, you should change the line where you bind the button to:
button.Bind(wx.EVT_BUTTON, self.onClick) or else give the button an id (it's the arg passed second in the button's constructor) and then you can use self.Bind(wx.EVT_BUTTON, self.onClick, id=BTN_ID) . The way you're currently doing it, any button's press will call the onClick function, not just a press on your specific button.
Math is the same in wxPython as Python. The one difference is that you'll be getting input via widgets (not raw_input) and you'll be showing the answer differently (through a widget instead of print).
That being said, when you use GetValue() on a wx.TextCtrl, it returns a string (same deal as raw_input). So you'll need to convert it to an int or float first before you can do calculations. I'd also suggest adding error checking in this part so that it re-asks for a number if bad input was given (i.e. letters, punctuation, etc). The str class in Python has a very handy function "isdigit()" that you may try to use for this.
Once you've converted this to an int or float, then you just need to perform the simplePI * radius^2 calculation. The math module contains a PI constant you can use: from math import pi .
As for output, you have tons of options. Here I'll just show a wx.MessageDialog way of alerting the user to the answer:
# parent, message, title, style (Ok btn and 'information' icon)
dlg = wx.MessageDialog(self, "The answer is ___", "Area of circle", wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy() This is just a simple example; if you have a TextCtrl on your frame for output you could just use outTC.SetValue(answer) , but note that SetValue() overwrites any other text in that widget. You could use the AppendText() function which wouldn't overwrite it if you wanted to retain past output. (Here's the TextCtrl API doc if you need it.)
So as you can see, there are a multitude of ways of giving output to the user.