Форум сайта python.su
Всем привет,
возможно ли открывать окна Toplevel() в рамках родительского окна Tk()? Как в Exel новые книги открываются как вкладки в основном окне.
Возможно вопрос глупый, но ничего конкретного в руководствах найти не могу.
Офлайн
Непонятна цель такого открытия. Вы хотите сделать что-то вроде закладок или?
Офлайн
Да, именно как вкладки. Грубо говоря есть центральное окно с выпадающими меню и при выборе открывалась соответсвущая вкладка, и данные в ней сохранялись после закрытия.
Офлайн
Все понятно. Вам не нужны вкладки. Реализация следующая:
1. Делаете простое корневое окно.
2. Делаете строку меню (но строка меню в Tkinter обладает спецификой - не забывайте).
3. Вешаете на каждую строку меню комманду, которая строит:
а) Рамку на весь экран (рамка - размер экрана без меню).
б) Размещаете в рамке все Вам нужные объекты (кнопки, полсы прокрутки, поля ввода и т.п.).
в) Если было выбрано следующее окно (следующее поле меню), то прячете рамку со всеи виджетами
метдом (.метод_упаоквки_forget()) - пример - .pack_forget()
г) Строите новую рамку с новыми виджетами…
Если нужен пример - пишите :)
Отредактировано 4kpt (Янв. 23, 2013 23:22:35)
Офлайн
Да, пример было бы замечательно
Офлайн
Извините, что поздно. Раньше не мог. Ловите…
# -*- coding:utf-8 -*- import Tkinter def clear(): # Удаление предыдущего окна, чтобы окна не наслаивались одно на другое if frm.winfo_children(): frm.winfo_children()[0].destroy() def gotomenu1(): u"""Построение кнопки первого меню""" clear() btn = Tkinter.Button(frm, text=u"Кнопка первого меню", width=30) btn.place(relx=0.5, rely=0.5, anchor="center") def gotomenu2(): u"""Построение кнопки второго меню""" clear() btn = Tkinter.Button(frm, text=u"Кнопка второго меню", width=30) btn.place(relx=0.5, rely=0.5, anchor="center") root = Tkinter.Tk() root.geometry("400x400+100+100") MB = Tkinter.Menu(root) MN = Tkinter.Menu(MB) MN.add_command(label=u"Первое окно", command=gotomenu1) MN.add_command(label=u"Второе окно", command=gotomenu2) MB.add_cascade(label=u"Выбор окна", menu=MN) root.config(menu=MB) frm = Tkinter.Frame(root, width=400, height=400, bg="red") frm.pack() root.focus_force() root.mainloop()
Отредактировано 4kpt (Янв. 24, 2013 21:55:01)
Офлайн