Tkinter GUI toplevel
16,244
Solution 1
You have to specify on which frame (the Toplevel()
) to add the new widgets:
from Tkinter import *
def topLevel():
top=Toplevel()
top.title("Listbox test")
notiLabel = Label(top, text ="----test----", font=('Times', 20))
notiLabel.grid(row=0,column=0, sticky=W)
noti = Label(top, text ="----test----", font=('Times', 18))
noti.grid(row=1,column=1, sticky=W)
f = Label(top, text ="------test-----") # note the 'top' parameter
# 'top' was your Toplevel widget
f.grid(row=3,column=0, sticky=W)
fa = Label(top)
fa.grid(row=3,column=1, sticky=W)
root=Tk()
root.title("Listbox test")
s = Label(text =">>>test<<<", font=(('Times'),20))
s.grid(row=2,column=0)
N = Label(text =">>>test<<<")
N.grid(row=3,column=0)
LB = Listbox(width=50, selectmode =SINGLE)
LB.grid(row=4, column=0)
TI = Button(text="b1", width =50, command=topLevel)
TI.grid(row=5, column=0)
root.mainloop()
I also got rid of the usage of both .pack()
and .grid()
, and stuck to only .grid()
.
Solution 2
Here is how I solved it, using this reference:
top=Toplevel()
notiLabel = Label(top, text ="----test----", font=('Times', 20))
Instead of:
top=Toplevel()
notiLabel = Label(text ="----test----", font=('Times', 20))
I had to declare "top" in the widget and declare root in root widget.
Author by
PyJar
Updated on June 04, 2022Comments
-
PyJar almost 2 years
from tkinter import* import tkinter as tk def topLevel(): top=Toplevel() top.title("Listbox test") notiLabel = Label(text ="----test----", font=('Times', 20)) notiLabel.pack() notiLabel.grid(row=0,column=0, sticky=W) noti = Label(text ="----test----", font=('Times', 18)) noti.pack() noti.grid(row=1,column=1, sticky=W) f = Label(text ="------test-----") f.pack() f.grid(row=3,column=0, sticky=W) fa = Label() fa.pack() fa.grid(row=3,column=1, sticky=W) root=tk.Tk() root.title("Listbox test") s = tk.Label(text =">>>test<<<", font=(('Times'),20)) s.pack() s.grid(row=2,column=0) N = tk.Label(text =">>>test<<<") N.pack() N.grid(row=3,column=0) LB = tk.Listbox(width=50, selectmode =SINGLE) LB.pack() LB.grid(row=4, column=0) TI = tk.Button(text="b1", width =50, command=topLevel) TI.pack() TI.grid(row=5, column=0) root.mainloop()
When the program runs, after click the command button b1, the information and label in toplevel window still print on the lower level window, how to fix this?