2013-04-13 4 views
2
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 команды информация и метка в окне верхнего уровня все еще печатаются в окне нижнего уровня, как это исправить?Tkinter GUI toplevel

+0

Вы не должны использовать 'widget.pack()', а затем использовать 'widget.grid (row = _row_, colum = _column_)' ... –

+0

Привет @ F3AR3DLEGEND, я добавил этот widget.pack(), потому что его не работает. Даже после того, как я добавил, все еще не работает. не знаю, как это работает ... – PyJar

ответ

1

Вот как я решил его, используя this reference:

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

Вместо:

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

я должен был объявить «сверху» в виджете и объявить корень в корневой виджет.

3

Вы должны указать на какой кадре (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().

Смежные вопросы