2013-12-08 2 views
1

Я пытаюсь понять виджет Toplevel в 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!».

ответ

3

Вы можете использовать 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() 

Демонстрация:

enter image description here

важно, чтобы убедиться, что виджеты, которые вы хотите, помещенные в Toplevel имеют правильные скобка т. В приведенном выше коде вы заметите, что я дал ярлык top своим родителем, так как я хочу, чтобы он зашел в Toplevel.

2

Toplevel похож на рамку, вы просто добавляете в нее виджеты с использованием пакета или сетки. Использование вашего примера, я добавил ярлык с это текст привязан к 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() 
Смежные вопросы