【问题标题】:Tkinter GUI toplevelTkinter GUI 顶层
【发布时间】:2013-04-06 05:51:03
【问题描述】:
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后,顶层窗口的信息和标签仍然打印在下层窗口,如何解决?

【问题讨论】:

  • 你不应该使用widget.pack()然后使用widget.grid(row=_row_, colum=_column_)...
  • 嗨@F3AR3DLEGEND,我添加了这个 widget.pack() 因为它不起作用。即使在我添加之后,仍然无法正常工作。不知道它是如何工作的......

标签: python user-interface tkinter


【解决方案1】:

您必须指定在哪个框架(Toplevel())上添加新小部件:

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

【讨论】:

    【解决方案2】:

    这是我解决它的方法,使用this reference

    top=Toplevel()
    notiLabel = Label(top, text ="----test----", font=('Times', 20))
    

    代替:

    top=Toplevel()
    notiLabel = Label(text ="----test----", font=('Times', 20))
    

    我必须在小部件中声明“顶部”并在根小部件中声明根。

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 2017-07-19
      相关资源
      最近更新 更多