Python Forum
Trying to use code from WxPython GUI Toolkit - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: GUI (https://python-forum.io/forum-10.html)
+--- Thread: Trying to use code from WxPython GUI Toolkit (/thread-11174.html)



Trying to use code from WxPython GUI Toolkit - Barrowman - Jun-26-2018

I have copied the following code:
import wx

class Example(wx.Frame()):
	def __init__(self, parent, title):
		super(Example,self).__init__(parent, title = title, size = (300,250))
		self.InitUI()
		self.Centre()
		self.Show()
	def InitUI(self):
		panel = wx.Panel(self)
		hbox = WX.BoxSizer(wx.HORIZONTAL)
		fgs = wx.FlexiGridSizer(3,2,10,10)
		title = wx.StaticText(panel, label = 'Title')
		author = wxStaticText(panel, label = 'Name of the Author')
		review = wxStaticText(panel, label = 'Review')
		tc1 = wx.TextCtrl(panel)
		tc2 = wx.TextCtrl(panel)
		tc3 = wx.TextCtrl(panel, style = wx.TE_MULTILINE)
		fgs.AddMany([(title),(tc1, 1,wx.EXPAND), (author), (tc2,1,wx,EXPAND),(review,1,wx.EXPAND),(tc3,1,wx.EXPAND)])
		fgs.AddGrowableRow(2,1)
		fgs.AddGrowableColumn(1,1)
		hbox.Add(fgs, proportion = 2, flag = wx.ALL|wx.EXPAND, border = 15)
		panel.SetSizer(hbox)


app = wx.App()
Example(None, title='FlexiGrid Demo')

app.MainLoop()
But I get the error:
Error:
Traceback (most recent call last): File "action1.py", line 3, in <module> class Example(wx.Frame()): wx._core.PyNoAppError: The wx.App object must be created first!
All of the code I have looked at so far in the book seems to be set out like this
with the app = wx.App() near the end.
Could anyone show me the correct syntax please?


RE: Trying to use code from WxPython GUI Toolkit - nilamo - Jun-26-2018

(Jun-26-2018, 03:59 PM)Barrowman Wrote: class Example(wx.Frame()):

Are you sure it's wx.Frame(), and not just wx.Frame?


RE: Trying to use code from WxPython GUI Toolkit - Barrowman - Jun-26-2018

(Jun-26-2018, 04:32 PM)nilamo Wrote:
(Jun-26-2018, 03:59 PM)Barrowman Wrote: class Example(wx.Frame()):

Are you sure it's wx.Frame(), and not just wx.Frame?

I did think it was but I have had another look at the code in the book and you spotted the ( my ) error.
Thanks for that.
What I started to do about a week ago was to try to develop some code using my laptop screen and a 19" T.V connected to the hdmi port. I did get a program to work but without using classes but it seems most use a class even if it's only used once. So I was trying to adjust my original code to work within a class environment. After messing about with that for some time I thought I should start with less complex stuff until I understand it better.


RE: Trying to use code from WxPython GUI Toolkit - nilamo - Jun-26-2018

wx.Frame is a class. If you don't make your own class, you'll probably end up calling it to build a frame. If you do make your own class, it'll probably use wx.Frame as a parent, which is how your custom class actually works (wx.Frame does the heavy lifting). Having parentheses in a class definition like that looks weird, because it's almost never what you want to be doing (unless it's a function that returns a dynamic class or something, but there's probably better ways to accomplish that anyway).