Форум сайта python.su
Всем доброго, помогите решить проблему! Есть следующий код:
#-*- coding: utf-8 -*-
import Tkinter
def fr1():
pass
def fr2():
pass
root = Tkinter.Tk()
main_menu = Tkinter.Menu(root)
root.config(menu=main_menu)
file_menu = Tkinter.Menu(main_menu)
main_menu.add_cascade(label="Работа", menu=file_menu)
file_menu.add_command(label="frame1", command=fr1)
file_menu.add_command(label="frame2", command=fr2)
file_menu.add_separator()
file_menu.add_command(label="Выход", command=root.destroy)
root.mainloop()
Офлайн
Делается просто, пакуешь эти фреймы в grid.
fr=Frame(root,........)
fr2=Frame(root,........)
def fr1():
fr.grid(row=0,column=0)
def fr2():
fr.grid(row=0,column=0)
Офлайн
Что-то я попробовал и у меня не получилось!
Делал так:
#-*- coding: utf-8 -*-
import Tkinter
def fr1():
f1.grid(row=0,column=0)
def fr2():
f2.grid(row=0,column=0)
root = Tkinter.Tk()
f1 = Tkinter.Frame(root)
f2 = Tkinter.Frame(root)
lab1 = Tkinter.Label(f1, text=u'Показываю первый фрейм', foreground = '#ff0000', font = ('Arial',10,'bold'))
lab1.grid(row=0,column=0)
lab2 = Tkinter.Label(f2, text=u'Фрейм 2', foreground = '#00ff00', font = ('Arial',10,'bold'))
lab2.grid(row=0,column=0)
main_menu = Tkinter.Menu(root)
root.config(menu=main_menu)
file_menu = Tkinter.Menu(main_menu)
main_menu.add_cascade(label="Работа", menu=file_menu)
file_menu.add_command(label="frame1", command=fr1)
file_menu.add_command(label="frame2", command=fr2)
file_menu.add_separator()
file_menu.add_command(label="Выход", command=root.destroy)
root.mainloop()
Офлайн
Помоему это оно:
grid_remove()
Remove this widget from the grid manager. The widget is not destroyed, and can be displayed again by grid or any other manager.
Офлайн
Cover Storyили pack/grid _forget
grid_remove()
Офлайн
Ок, спасибо. Вроде разобрался!
Офлайн
а по какому принципу frame выделяет область под другие элементы?
мой вопрос в том, что у меня 4 фрейма, причем один меня удовлетворяет, на втором нет Label, на третьем нет Button, а четвертый опять полный. вот код:
from Tkinter import*
tk=Tk()
tk.title('Books')
fr=Frame(tk, width=800, height=300, bg='red')
fr.grid(column=0, row=0)
lab=Label(fr,text='Avtor')
lab.grid()
en=Entry(fr, background= ‘GREEN’)
en.grid()
but=Button(fr,text='OK', fg='white', bg='black', font='labelfont')
but.grid()
fr1=Frame(tk, width=800, height=300, bg='blue')
fr1.grid(column=1, row=0)
lab1=Label(fr1, text='Kniga')
lab1.grid()
en1=Entry(fr1)
en.grid()
but1=Button(fr1, text='OK')
but1.grid()
fr2=Frame(tk, width=800, height=300, bg='pink')
fr2.grid(column=2, row=0)
lab2=Label(fr2, text='izdatelstvo')
lab2.grid()
en2=Entry(fr2)
en2.grid()
but2=Button(fr2, text='OK')
en2.grid()
fr3=Frame(tk, width=800, height=300, bg='yellow')
fr3.grid(column=3, row=0)
lab3=Label(fr3, text='god izdaniya')
lab3.grid()
en3=Entry(fr3)
en3.grid()
but3=Button(fr3, text='OK')
but3.grid()
ex=Button(tk, text='Exit', relief= RAISED, command=quit)
ex.grid()
и почему они располагаются не на одном уровне
Офлайн
ил киньте ссылку, где это есть.
?????
Офлайн
Наверное, перупутал column с raw в упаковщике grid, т.к. четыре фрейма шириной 800 врядли норм создадуться на экране с меньшим разрешением. Также нумерация строк начинается с 1, а колонок с 0.
Офлайн
Вообще grid() без параметров это не нормально.
Офлайн