[Tutor] Tkinter / Variable passing (original) (raw)

Michael Lange klappnase at freenet.de
Wed Jul 21 22:28:46 CEST 2004


On Wed, 21 Jul 2004 06:24:17 -0700 "Faulconer, Steven M." <STEVEN.M.FAULCONER at saic.com> wrote:

This is where the issue lies. How can I tell the CheckerApp instance what the user selected in the CheckerWindow instance? I've tried different types of variables (global and non). I've even added a function to the CheckerApp that I attempt to call from the CheckerWindow, which fails with an "AttributeError" Toplevel instance has no attribute 'CheckerAccept'".

In line 252 of your script you create your CheckerWindow instance:

CheckerWindow( self.newroot, 'Feature Count', command )

where self.newroot is an instance of Tkinter.Toplevel .

Your method "CheckerAccept()" is a method of the CheckerApp class. So when you call

self.myparent.CheckerAccept()

and self.myparent is a Tkinter.Toplevel python is right to complain.

There are two possibilities to fix this:

  1. make your CheckerApp instance an attribute of the CheckerWindow class, like this:

class CheckerWindow: def init( self, parent, checkerApp, checker, command ): self.checkerApp = checkerApp <etc.>

and pass "self" as argument for checkerApp when you create the CheckerWindow from within the CheckerApp:

CheckerWindow( self.newroot, self, 'Feature Count', command )

Then you could call

self.checkerApp.CheckerAccept()

  1. make your CheckerApp class a subclass of Tkinter.Toplevel

class CheckerApp(Tkinter.Toplevel):

def __init__( self, parent, project, database, dbpath ):
    Tkinter.Toplevel.__init__(self, parent)
    # Window Initialization routines
    self.PROJECT = project
    self.DATABASE = database
    self.DBPATH = dbpath
    self.resizable( width = False, height = False )
    self.option_add( "*Font", "Arial 12" )
    self.title( "SAIC Checker Front End" )
    self.focus_set()
    self.Status = 0
    <etc.>

and then pass "self" as parent to the CheckerWindow:

CheckerWindow( self, 'Feature Count', command )

I hope this helps

Michael



More information about the Tutor mailing list