By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,015 Members | 990 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,015 IT Pros & Developers. It's quick & easy.

Having problems using Tkinter

P: n/a
Hi everyone ! ! !

I'm just a month old in the world of Python and trying to develop an
application using Tkinter in which a new window pops out on a
particular button press.The code for this new window is in
"AddKlas.py" file.
The problem is all the content of the new window is overwritten on
the previous window.
Below is the code of the two files

PLEASE help me out ! ! ! !

#1st file
#Klass.py
from Tkinter import *
import AddKlass
class Klass(Frame):
def __init__(self):
self.labels()
self.buttons()
self.menubuttons()
self.scrollandcanvas()
def labels(self):
label1=Label(relief='groove',text=" Class
Id",width=20,anchor=W)
label1.grid(row=0,column=0)
label2=Label(relief='groove',text=" Class
Name",width=20,anchor=W)
label2.grid(row=0,column=1)
label3=Label(relief='groove',text=" Class Room
No.",width=20,anchor=W)
label3.grid(row=0,column=2)
label4=Label(relief='groove',text=" Category
Id",width=80,anchor=W)
label4.grid(row=0,column=3)

def buttons(self):
button1=Button(text="Add",width=10,command=self.Ca llAdd)
button1.grid(row=2,column=5)
button2=Button(text="View",width=10,state=DISABLED )
button2.grid(row=3,column=5)
button3=Button(text="Next",width=10,state=DISABLED )
button3.grid(row=4,column=5)

def menubuttons(self):
menubutton=Menubutton(text="Options",width=10,reli ef="raised")
menubutton.grid(row=5,column=5)
menubutton.menu=Menu(menubutton)
menubutton["menu"]=menubutton.menu
menubutton.menu.add_command(label="Modify")
menubutton.menu.add_command(label="Delete")

def scrollandcanvas(self):
yscroll=Scrollbar()
yscroll.grid(row=1,column=4,rowspan=7,sticky=N+S)
canva=Canvas(bg="#fff",yscrollcommand=yscroll.set)
canva.grid(row=1,column=0,rowspan=7,columnspan=4,s ticky=N+E+S
+W)

def CallAdd(self):
AddKlass.root=Tk()
AddKlass.AddKlas()
AddKlass.root.focus_force()
AddKlass.root.geometry("275x250")
AddKlass.root.title("Add Class Information")
AddKlass.root.resizable(width=False,height=False)
AddKlass.root.mainloop()

root=Tk()
app = Klass()
root.geometry("960x300")
root.title("Class Information")
root.resizable(width=False,height=False)
root.mainloop()


#2nd file
#AddKlass.py
from Tkinter import *

class AddKlas(Frame):
#root=None
def __init__(self):
self.labels()
self.buttons()
self.entry()

def labels(self):
label1=Label(relief='flat',text=" Class
Id :",height=3,width=20)
label1.grid()
label2=Label(relief='flat',text=" Class
Name :",height=3,width=20)
label2.grid()
label3=Label(relief='flat',text=" Class Room
No. :",height=3,width=20)
label3.grid()
label4=Label(relief='flat',text=" Category
Id :",height=3,width=20)
label4.grid()

def buttons(self):
button1=Button(text="Add",width=10,state=DISABLED)
button1.grid(row=5,column=0)
button2=Button(text="Cancel",width=10,command=self .quit)
button2.grid(row=5,column=1)

def entry(self):
entry1=Entry() #by default width =20
entry1.grid(row=0,column=1)
entry2=Entry()
entry2.grid(row=1,column=1)
entry3=Entry()
entry3.grid(row=2,column=1)
entry4=Entry()
entry4.grid(row=3,column=1)

#root=Tk()
#app = AddKlas()
#root.geometry("275x250")
#root.title("Add Class Information")
#root.resizable(width=False,height=False)
#root.mainloop()
Jul 1 '08 #1
Share this Question
Share on Google+
1 Reply


P: n/a
On Tue, 01 Jul 2008 03:13:42 -0700, viv1tyagi wrote:
Hi everyone ! ! !

I'm just a month old in the world of Python and trying to develop an
application using Tkinter in which a new window pops out on a
particular button press.The code for this new window is in
"AddKlas.py" file.
The problem is all the content of the new window is overwritten on
the previous window.
Below is the code of the two files
There can be only one `Tkinter.Tk` instance per running program. Other
top level windows have to be `Tkinter.Toplevel` instances.

And you should reconsider your usage of classes. You are just abusing
them as containers for functions without using `self` really. And you
should pass the instance of the parent widget as first argument to
constructors of widgets. Otherwise the very first, i.e. the `Tk` instance,
is assumed, which is not true for the widgets that should appear in the
`Toplevel` instance.

Ciao,
Marc 'BlackJack' Rintsch
Jul 1 '08 #2

This discussion thread is closed

Replies have been disabled for this discussion.