I have searched quite a bit,but I couldn\'t find a solution to this. I\'m trying to create a registration form using tkinter which later on i shall connect to a database. Here i
You're passing self
in as the master / parent to your widgets.
e.g - Entry(self, ...)
But, your class MWindow
doesn't inherit from a Tkinter widget.
Perhaps you meant to use self.frame
?
If you really want to use self
you could do this:
import Tkinter as tk
...
class MWindow(tk.Frame):
def __init__(self, master, *args, **kwargs):
tk.Frame.__init__(self, master, *args, **kwargs)
abutton = tk.Button(self, ....)
If this is confusing, then here's a pretty good answer.
Since you mentioned the source code....
Look at the Tk()
class. Which contains the following line:
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
Now, check out the BaseWidget
class which all Widget
's inherit from. This contains the following line:
self.tk = master.tk
You have you're base root window Tk()
which has the attribute tk
and every child of this set's an attribute tk
to be the master
's tk attribute. So on and so forth for nested widgets, since the parent of a widget could just be another widget it doesn't have to be the root window of course.