【问题标题】:Edit contents of new Toplevel window编辑新顶层窗口的内容
【发布时间】:2013-12-08 19:40:36
【问题描述】:

我正在尝试了解 Tkinter 中的 Toplevel 小部件。我想创建一个带有按钮的窗口,单击该按钮会打开一个包含内容的新窗口。

我有这个,它可以打开一个新窗口,但我不知道如何编辑那个新窗口的内容。

from Tkinter import *

master = Tk()
C = Canvas(master, width=200, height=100)
C.pack()

def Open():
    top = Toplevel()

b = Button(master, text="Open New Window", command=Open)
b.pack()

mainloop()

为方便起见,假设我希望新窗口包含一些文本,例如:“Hello World!”

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    您几乎可以像使用根窗口一样使用Toplevel

    from Tkinter import *
    
    master = Tk()
    C = Canvas(master, width=200, height=100)
    C.pack()
    
    def Open():
        top = Toplevel()
        # Add a label to the TopLevel, just like you would the root window
        lbl = Label(top, text="Hello World")
        lbl.pack()
    
    b = Button(master, text="Open New Window", command=Open)
    b.pack()
    
    mainloop()
    

    演示:

    重要的是确保您要放置在Toplevel 中的小部件具有正确的父级。在上面的代码中,您会注意到我将标签 top 作为其父标签,因为我希望它进入 Toplevel

    【讨论】:

      【解决方案2】:

      Toplevel 类似于 Frame,您只需使用 pack 或 grid 在其中添加小部件。使用您的示例,我添加了一个标签,其文本与 StringVar 相关联:

      from Tkinter import *
      
      master = Tk()
      C = Canvas(master, width=200, height=100)
      C.pack()
      
      some_string = StringVar(master, "Hello, World!")
      
      
      def Open():
          top = Toplevel()
          some_frame = Frame(top)
          some_label = Label(some_frame, textvariable=some_string)
          some_label.pack()
          some_frame.pack(fill=BOTH, expand=TRUE)
      
      b = Button(master, text="Open New Window", command=Open)
      b.pack()
      
      mainloop()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-06
        • 1970-01-01
        • 2010-10-07
        • 1970-01-01
        • 2010-10-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多