Re: Mysterious "Attribute Errors" when GUI Programming

2005-03-09 Thread Coral Snake
Again Thanks to everyone here. Both the GTK and the Tkinter example are
running fine now.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Mysterious "Attribute Errors" when GUI Programming

2005-03-08 Thread Robert Kern
Coral Snake wrote:
Thank you all. It appears that I was right in my original opinion of
source code from the Python Developer's Handbook by Andre Lessa and the
PyGTK Tutorial. That is where these source codes came from.
The code in Question came from the Chapter Getting Started in the PyGTK
Tutorial 
Note that the code you wrote was incorrectly indented. The original 
code[1] was *correctly* indented and ought to work.

and from Chapter 15, page 579 in the Python Developer's
Handbook.
I *have* heard that this book contains many errors.
[1] 
http://www.moeraki.com/pygtktutorial/pygtk2tutorial/ch-GettingStarted.html#sec-HelloWorld

--
Robert Kern
[EMAIL PROTECTED]
"In the fields of hell where the grass grows high
 Are the graves of dreams allowed to die."
  -- Richard Harter
--
http://mail.python.org/mailman/listinfo/python-list


Re: Mysterious "Attribute Errors" when GUI Programming

2005-03-08 Thread Coral Snake
klappnase wrote:
> "Coral Snake" <[EMAIL PROTECTED]> wrote in message
news:<[EMAIL PROTECTED]>...
>
> > --
> > Tkinter:
> >
> > from Tkinter import *
> > root = Tk()
>
> This creates the application's main window. The Tk() command is not
> some kind of initialization routine, but actually returns a ready to
> use toplevel widget.
>
> > win = Toplevel(root)
>
> This creates a child window with the parent "root";
>
> > win.pack()
>
> here you try to put the child window into the main window; this
cannot
> work,
> because a Tk() or Toplevel() window cannot contain other Toplevel()
> instances.
> Toplevel() is used for things like dialogs. If you need a separate
> container
> widget inside "root" use Frame() instead.
>
> > Label(win, text= "Hello, Python World").pack(side=TOP)
> > Button(win, text= "Close", command=win.quit).pack(side=RIGHT)
> > win.mainloop()
> > -
> >
> > AttributeError: Toplevel instance has no attribute 'pack'
> >
> > -
>
> The correct usage of what you tried looks like this:
>
> from Tkinter import *
> root = Tk()
> Label(win, text= "Hello, Python World").pack(side=TOP)
> Button(win, text= "Close", command=win.quit).pack(side=RIGHT)
> root.mainloop()
>
> I hope this helps
>
> Michael

Thank you all. It appears that I was right in my original opinion of
source code from the Python Developer's Handbook by Andre Lessa and the
PyGTK Tutorial. That is where these source codes came from.

The code in Question came from the Chapter Getting Started in the PyGTK
Tutorial and from Chapter 15, page 579 in the Python Developer's
Handbook.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Mysterious "Attribute Errors" when GUI Programming

2005-03-08 Thread klappnase
"Coral Snake" <[EMAIL PROTECTED]> wrote in message news:<[EMAIL PROTECTED]>...

> --
> Tkinter:
> 
> from Tkinter import *
> root = Tk()

This creates the application's main window. The Tk() command is not
some kind of initialization routine, but actually returns a ready to
use toplevel widget.

> win = Toplevel(root)

This creates a child window with the parent "root"; 

> win.pack()

here you try to put the child window into the main window; this cannot
work,
because a Tk() or Toplevel() window cannot contain other Toplevel()
instances.
Toplevel() is used for things like dialogs. If you need a separate
container
widget inside "root" use Frame() instead.

> Label(win, text= "Hello, Python World").pack(side=TOP)
> Button(win, text= "Close", command=win.quit).pack(side=RIGHT)
> win.mainloop()
> -
> 
> AttributeError: Toplevel instance has no attribute 'pack'
> 
> -

The correct usage of what you tried looks like this:

from Tkinter import *
root = Tk()
Label(win, text= "Hello, Python World").pack(side=TOP)
Button(win, text= "Close", command=win.quit).pack(side=RIGHT)
root.mainloop()

I hope this helps

Michael
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Mysterious "Attribute Errors" when GUI Programming

2005-03-08 Thread Steve Holden
Coral Snake wrote:
I am having problems with programming even simple "Hello World"
programs from books and tutorials that use Python GUI libraries. Such
Programs cause python to throw "Attribute Errors" even when the
"attributes" being asked for by the errors exist in the source code.
This has happened to me in both the standard python GUI Library Tkinter
and in pyGTK here are the codes for the "Hello World Programs involved
and their corosponding "Attribute Errors":
--
Tkinter:
from Tkinter import *
root = Tk()
win = Toplevel(root)
win.pack()
Label(win, text= "Hello, Python World").pack(side=TOP)
Button(win, text= "Close", command=win.quit).pack(side=RIGHT)
win.mainloop()
-
AttributeError: Toplevel instance has no attribute 'pack'
-
pyGTK
import pygtk
pygtk.require('2.0')
import gtk
class HelloWorld:
   def hello(self, widget, data=None):
  print "Hello World"
   def delete_event(self, widget, event, data= None):
  print "delete event occured"
  return gtk.FALSE
   def destroy(self, widget, data = None):
  gtk.main_quit()
   def __init__(self):
  self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  self.window.connect("delete_event", self.delete_event)
  self.window.connect("destroy", self.destroy)
  self.window.set_border_width(10)
  self.button = gtk.Button("Hello, World!")
  self.button.connect("clicked", self.hello, None)
  self.button.connect_object("clicked",
  gtk.Widget.destroy, self.window)
  self.window.add(self.button)
  self.button.show()
  self.window.show()
  def main(self):
 gtk.main()
if __name__ == "__main__":
   hello = HelloWorld()
   hello.main()

AttributeError: HelloWorld instance has no attribute 'main'

As you can see if you look at this code the "attributes"
being asked for by both programs exist in the source code but python
insists that they DON'T. What I want to know is what kind of bugs
either in my source code or in Python itself leads it to to throw these
"Attribute Errors" when the "attribute" being asked for by the error
exists in the source code.
There's absolutely no point trying do divine how to write Tkinter-based 
programs by reading the source, though it's a brave approach. But ...

 >>> from Tkinter import *
 >>> root = Tk()
 >>> win = Toplevel(root)
 >>> "pack" in dir(win)
 False
 >>>
tells you, absolutely beyond a shadow of a doubt, that Toplevel windows 
don't have a "pack" method.

Take a look at a few of the working examples of Tkinter programs, that 
should tell you what you are doing wrong.

regards
 Steve
--
http://mail.python.org/mailman/listinfo/python-list


Re: Mysterious "Attribute Errors" when GUI Programming

2005-03-07 Thread Robert Kern
Coral Snake wrote:
I am having problems with programming even simple "Hello World"
programs from books and tutorials that use Python GUI libraries. Such
Programs cause python to throw "Attribute Errors" even when the
"attributes" being asked for by the errors exist in the source code.
This has happened to me in both the standard python GUI Library Tkinter
and in pyGTK here are the codes for the "Hello World Programs involved
and their corosponding "Attribute Errors":
It might help us if you cited where these "Hello World" programs are 
coming from.

[snip]
   def __init__(self):
  self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  self.window.connect("delete_event", self.delete_event)
  self.window.connect("destroy", self.destroy)
  self.window.set_border_width(10)
  self.button = gtk.Button("Hello, World!")
  self.button.connect("clicked", self.hello, None)
  self.button.connect_object("clicked",
  gtk.Widget.destroy, self.window)
  self.window.add(self.button)
  self.button.show()
  self.window.show()
  def main(self):
 gtk.main()
Are you sure about the indentation here? Because I'm willing to bet 
that's your problem in this example. I can't help with the Tkinter one, 
though.

if __name__ == "__main__":
   hello = HelloWorld()
   hello.main()

AttributeError: HelloWorld instance has no attribute 'main'

As you can see if you look at this code the "attributes"
being asked for by both programs exist in the source code but python
insists that they DON'T.
No, searching the source code for Tkinter shows no "Toplevel.pack" 
method (or in any of its base classes). Where is this program coming 
from? As for your GTK example, you have incorrect indentation.

What I want to know is what kind of bugs
either in my source code or in Python itself leads it to to throw these
"Attribute Errors" when the "attribute" being asked for by the error
exists in the source code.
--
Robert Kern
[EMAIL PROTECTED]
"In the fields of hell where the grass grows high
 Are the graves of dreams allowed to die."
  -- Richard Harter
--
http://mail.python.org/mailman/listinfo/python-list


Mysterious "Attribute Errors" when GUI Programming

2005-03-07 Thread Coral Snake
I am having problems with programming even simple "Hello World"
programs from books and tutorials that use Python GUI libraries. Such
Programs cause python to throw "Attribute Errors" even when the
"attributes" being asked for by the errors exist in the source code.
This has happened to me in both the standard python GUI Library Tkinter
and in pyGTK here are the codes for the "Hello World Programs involved
and their corosponding "Attribute Errors":

--
Tkinter:

from Tkinter import *
root = Tk()
win = Toplevel(root)
win.pack()
Label(win, text= "Hello, Python World").pack(side=TOP)
Button(win, text= "Close", command=win.quit).pack(side=RIGHT)
win.mainloop()
-

AttributeError: Toplevel instance has no attribute 'pack'

-
pyGTK

import pygtk
pygtk.require('2.0')
import gtk

class HelloWorld:
   def hello(self, widget, data=None):
  print "Hello World"

   def delete_event(self, widget, event, data= None):
  print "delete event occured"
  return gtk.FALSE

   def destroy(self, widget, data = None):
  gtk.main_quit()

   def __init__(self):
  self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  self.window.connect("delete_event", self.delete_event)
  self.window.connect("destroy", self.destroy)
  self.window.set_border_width(10)
  self.button = gtk.Button("Hello, World!")
  self.button.connect("clicked", self.hello, None)
  self.button.connect_object("clicked",
  gtk.Widget.destroy, self.window)
  self.window.add(self.button)
  self.button.show()
  self.window.show()

  def main(self):
 gtk.main()

if __name__ == "__main__":
   hello = HelloWorld()
   hello.main()



AttributeError: HelloWorld instance has no attribute 'main'


As you can see if you look at this code the "attributes"
being asked for by both programs exist in the source code but python
insists that they DON'T. What I want to know is what kind of bugs
either in my source code or in Python itself leads it to to throw these
"Attribute Errors" when the "attribute" being asked for by the error
exists in the source code.

-- 
http://mail.python.org/mailman/listinfo/python-list