Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 30, 2009 11:35:56

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена фреймов в Tkinter

Всем доброго, помогите решить проблему! Есть следующий код:

#-*- 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?



Python 2.7.3
Pyside 1.1.2

Офлайн

#2 Янв. 30, 2009 14:49:40

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Смена фреймов в Tkinter

Делается просто, пакуешь эти фреймы в grid.

fr=Frame(root,........)
fr2=Frame(root,........)
def fr1():
fr.grid(row=0,column=0)
def fr2():
fr.grid(row=0,column=0)
типа того… :)



Офлайн

#3 Янв. 31, 2009 06:29:58

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена фреймов в Tkinter

Что-то я попробовал и у меня не получилось!
Делал так:

#-*- 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()



Python 2.7.3
Pyside 1.1.2

Офлайн

#4 Фев. 2, 2009 19:19:03

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена фреймов в Tkinter

Помоему это оно:

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.



Python 2.7.3
Pyside 1.1.2

Офлайн

#5 Фев. 5, 2009 11:22:41

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена фреймов в Tkinter

Cover Story
grid_remove()
или pack/grid _forget



Офлайн

#6 Фев. 6, 2009 06:16:46

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена фреймов в Tkinter

Ок, спасибо. Вроде разобрался!



Python 2.7.3
Pyside 1.1.2

Офлайн

#7 Окт. 19, 2009 12:19:10

rokki
От:
Зарегистрирован: 2009-09-22
Сообщения: 79
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена фреймов в Tkinter

а по какому принципу 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()

и почему они располагаются не на одном уровне



Офлайн

#8 Окт. 21, 2009 08:12:59

rokki
От:
Зарегистрирован: 2009-09-22
Сообщения: 79
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена фреймов в Tkinter

ил киньте ссылку, где это есть.
?????



Офлайн

#9 Окт. 21, 2009 12:51:33

DHT
От:
Зарегистрирован: 2009-09-24
Сообщения: 119
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена фреймов в Tkinter

Наверное, перупутал column с raw в упаковщике grid, т.к. четыре фрейма шириной 800 врядли норм создадуться на экране с меньшим разрешением. Также нумерация строк начинается с 1, а колонок с 0.



Офлайн

#10 Окт. 21, 2009 21:02:17

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Смена фреймов в Tkinter

Вообще grid() без параметров это не нормально.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version