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()
程序运行时,点击命令按钮b1后,顶层窗口中的信息和标签仍打印在下层窗口中,如何解决?
最佳答案
您必须指定在哪个框架(theToplevel()
)上添加新的小部件:
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()
我也不再使用
.pack()
和.grid()
,只使用.grid()
。