Sven Arduwie wrote:
On 30 mei, 17:02, Sven Arduwie <sven.ardu...@gmail.com> wrote:
Can anyone help a python newbie and tell me why the simple window I
created in Glade is not showing?
This is the XML generated by Glade 3:
<?xml version=.0"?>
<interface>
<requires lib=tk+" version="2.16"/>
<!-- interface-naming-policy project-wide -->
<object class=tkWindow" id="helloWorld">
<property name=isible">True</property>
<signal name=estroy" handler="on_helloWorld_destroy"/>
<child>
<placeholder/>
</child>
</object>
</interface>
And this is the Python code:
#!/usr/bin/env python
import pygtk
pygtk.require("2.0")
import gtk
class HelloWorld(object):
def getWindow(self):
return self.window
def setWindow(self, window):
self.window =indow
window =roperty(getWindow, setWindow)
def __init__(self):
builder =tk.Builder()
builder.add_from_file("helloWorld.glade")
builder.connect_signals({"on_helloWorld_destroy" :
self.onHelloWorldDestroy})
self.window =uilder.get_object("helloWorld")
self.window.show()
def onHelloWorldDestroy(self):
pass
I ran this in a terminal on Ubuntu 9.04 like this:
s...@dell:~$ cd ./gvfs/python\ on\ sven/
s...@dell:~/gvfs/python on sven$ python ./helloWorld.py
s...@dell:~/gvfs/python on sven$
Okay I'm mad at myself for forgetting this:
if __name__ ="__main__":
helloWorld =elloWorld()
gtk.main()
When I add that, a new problem arises: the terminal floods with:
File "./helloWorld.py", line 12, in setWindow
self.window =indow
File "./helloWorld.py", line 12, in setWindow
self.window =indow
File "./helloWorld.py", line 12, in setWindow
self.window =indow
ad infinitum
You have infinite recursion because setWindow is defined indirectly in
terms of itself. It uses the property 'window', which is defined to use
setWindow.
The cure for it is simple. If you want to have a private data
attribute, use a leading underscore. Don't call it the same thing that
the public is going to use.
class HelloWorld(object):
def getWindow(self):
return self._window
def setWindow(self, window):
self._window = window
window = property(getWindow, setWindow)
def __init__(self):
builder = gtk.Builder()
builder.add_from_file("helloWorld.glade")
builder.connect_signals({"on_helloWorld_destroy" :
self.onHelloWorldDestroy})
self._window = builder.get_object("helloWorld")
self._window.show()
def onHelloWorldDestroy(self):
pass
(untested)
--
http://mail.python.org/mailman/listinfo/python-list