Найти - Пользователи
Полная версия: Смена фреймов в Tkinter
Начало » GUI » Смена фреймов в Tkinter
1 2 3
Cover Story
Всем доброго, помогите решить проблему! Есть следующий код:
#-*- 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()
Как при выборе пункта меню frame1, загрузить(создать) в root frame1, а при загрузке выборе пункта меню frame2, загрузить(создать) в root frame2?
igor.kaist
Делается просто, пакуешь эти фреймы в grid.
fr=Frame(root,........)
fr2=Frame(root,........)
def fr1():
fr.grid(row=0,column=0)
def fr2():
fr.grid(row=0,column=0)
типа того… :)
Cover Story
Что-то я попробовал и у меня не получилось!
Делал так:
#-*- 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()
Cover Story
Помоему это оно:

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.
balu
Cover Story
grid_remove()
или pack/grid _forget
Cover Story
Ок, спасибо. Вроде разобрался!
rokki
а по какому принципу 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()

и почему они располагаются не на одном уровне
rokki
ил киньте ссылку, где это есть.
?????
DHT
Наверное, перупутал column с raw в упаковщике grid, т.к. четыре фрейма шириной 800 врядли норм создадуться на экране с меньшим разрешением. Также нумерация строк начинается с 1, а колонок с 0.
Griffon
Вообще grid() без параметров это не нормально.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB