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()

07-24 21:24