Hi! I've been working on this app last days, and can't get passed this problem: I've created two windows, (one is created by a button click in the first window), and from the other window I want to change some variables defined in the first window.
I'm guessing either I haven't understood the whole parent thingy, or messed up somewhere there. The source code is: (there's some translations and explanations below) #!/usr/bin/python # -*- coding: utf-8 -*- from __future__ import division import Tkinter class enhetsomvandlare_tk(Tkinter.Tk): def __init__(self,parent): Tkinter.Tk.__init__(self,parent) self.parent = parent self.initialize() def initialize(self): self.grid() self.LV = Tkinter.StringVar() label = Tkinter.Label(self,textvariable=self.LV, anchor="w",fg="white",bg="blue") label.grid(column=0,row=0,columnspan=1,sticky='EW') self.LV.set(u"Lbs to Kg") global enhet enhet = "lbstokg" self.entryVariable1 = Tkinter.StringVar() self.entry = Tkinter.Entry(self,textvariable=self.entryVariable1) self.entry.grid(column=0,row=1,sticky='W') self.entry.bind("<Return>", self.OnPressEnter) self.entryVariable1.set(u"") self.entryVariable2 = Tkinter.StringVar() self.entry = Tkinter.Entry(self,textvariable=self.entryVariable2) self.entry.grid(column=1,row=1,sticky='W') self.entry.bind("<Return>", self.OnPressEnter) self.entryVariable2.set(u"") raknaknapp = Tkinter.Button(self,text=u"Räkna ut!", command=self.Onraknaknapp1) raknaknapp.grid(column=2,row=1) Change_units = Tkinter.Button(self,text=u"Change Units", command=self.OnChange_units) Change_units.grid(column=1,row=2) self.grid_columnconfigure(0,weight=1) self.grid_columnconfigure(1,weight=1) self.grid_columnconfigure(2,weight=1) self.resizable(True,False) self.update() self.geometry(self.geometry()) def Onraknaknapp1(self): if enhet == "lbstokg": lbs = float(self.entryVariable1.get()) kg = lbs / 0.455 self.entryVariable2.set(kg) elif enhet == "kgtolbs": kg = float(self.entryVariable1.get()) lbs = kg * 0.455 self.entryVariable2.set(lbs) def OnChange_units(self): class Change_units_tk(Tkinter.Tk): def __init__(self,parent): Tkinter.Tk.__init__(self,parent) self.parent = parent self.initialize() def initialize(self): self.grid() self.LV2 = Tkinter.StringVar() label = Tkinter.Label(self,textvariable=self.LV2, anchor="w",fg="white",bg="blue") label.grid(column=0,row=0,columnspan=2,sticky='EW') self.LV2.set(u"Choose Unit...") kgtolbs = Tkinter.Button(self,text=u"Kg to lbs", command=self.Onkgtolbs) kgtolbs.grid(column=0,row=1) lbstokg = Tkinter.Button(self,text=u"Lbs to kg", command=self.Onlbstokg) lbstokg.grid(column=1,row=1) self.grid_columnconfigure(0,weight=1) self.grid_columnconfigure(1,weight=1) self.grid_columnconfigure(2,weight=1) self.resizable(True,False) self.update() self.geometry(self.geometry()) def Onkgtolbs(self): self.LV.set("Kg to lbs") global enhet enhet = "kgtolbs" def Onlbstokg(self): self.LV.set("Lbs to kg") global enhet enhet = "lbstokg" if __name__ == "__main__": app = Change_units_tk(enhetsomvandlare_tk) app.title("What unit?") def OnPressEnter(self,event): self.LV.set( "Hej" ) if __name__ == "__main__": app = enhetsomvandlare_tk(None) app.title("Robert's Enhetsomvandlare") app.mainloop() (Some things are swedish, so I'll translate them to make this easier to understand) Legend for my code: enhet = unit LV = Labelvariable raknaknapp = calculatebutton Räkna ut = calculate Now as soon as I get the crossover thing to work I'll start adding more math, functions and other things to it to make it useful. But right now I want to get rid of this error message: Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 1413, in __call__ return self.func(*args) File "/home/robert/Desktop/programmering/python/12 enhets omvandlare/12.py", line 118, in OnChange_units app = Change_units_tk(enhetsomvandlare_tk) File "/home/robert/Desktop/programmering/python/12 enhets omvandlare/12.py", line 78, in __init__ Tkinter.Tk.__init__(self,parent) File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 1646, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) TypeError: create() argument 1 must be string or None, not classobj OR when i have the line: app = Change_units_tk(enhetsomvandlare_tk) changed to: app = Change_units_tk(None) I will get the error message: Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 1413, in __call__ return self.func(*args) File "/home/robert/Desktop/programmering/python/12 enhets omvandlare/12.py", line 107, in Onkgtolbs self.LV.set("Kg to lbs") File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 1725, in __getattr__ return getattr(self.tk, attr) AttributeError: LV Which is the one I really don't get... Anyways, I've searched the net for some help, but couldn't find anything really helpful. (I know I probably missed it, but this was easier... :P) Help is appreciated, (I'm a first time poster). Have a nice day! :) /Robert -- View this message in context: http://old.nabble.com/Multiple-windows%2C-accessing-variables-across-them-won%27t-work-for-me-%28Using-Tkinter%29-tp29503063p29503063.html Sent from the Python - tkinter-discuss mailing list archive at Nabble.com. _______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org http://mail.python.org/mailman/listinfo/tkinter-discuss