Найти - Пользователи
Полная версия: Вкладки. Средствами tkinter.
Начало » GUI » Вкладки. Средствами tkinter.
1 2
solomon243
хочу в интерфейсе организовать вкладки, переключающие фреймы с виджетами. Есть ли стандартные средства в tkinter? Ну или какой-нибудь простой класс?
4kpt
solomon243
Вы ошиблись разделом… Перенесите тему в раздел по GUI и я Вам полностью отвечу на Ваш вопрос.


Done
4kpt
Как понимаю, благодарить нужно cutwater…
Механизма построения вкладок в Tkinter нет, нужно писать самому…

На самом деле, закладки в GUI не нужны. Это уже пережиток прошлого. Как пишут в книгах по разработке и дизайну пользовательского интерфейса вкладки существенно портят ментальную модель, так как пользователь не может запомнить вкладки, так как они налеплены друг на друга.
Более разумным является использование вместо закладок сместь списка и окна настроек (слева список, справа - выбор и настройка), как это реализовано в окне (Сервис-Параметры) Open office. Такой подход считается более читабельным и создает хорошую ментальную модель окна.

Другой альтернативой закладок являются управляемые мастера, т.е. это такие мастера, переход по элементам которых осуществляется слева-на-право, но они позволяют случайно переходить на любое окно (почти как закладки). История переходов отображается сверху. Открытое окно (или раздел) подсвечивается или выделяется с помощью шрифта. Такое решение считается хуже предыдущего, но тоже может быть использовано и все равно это будет лучше чем решение с закладками.

Но если это все не подходит - пишите. Когда-то, когда еще разбирался с Tkinter и питоном вообще мне пришлось на заказ писать одну программу. Полностью ее я вывешивать не буду, чтобы не позориться, но тот кусок, который отвечал за закладки могу и показать. Единственное ограничение - там закладки не могли отображаться каскадом, а отображались только в линию. Хотя, я думаю, можно и допедалировать…
Если очень нужо, то я выложу, но за качество кода не отвечаю :) Сам был зеленый - зеленый + клиент был дубовый - дубовый…
solomon243
4kpt
Но если это все не подходит - пишите. Когда-то, когда еще разбирался с Tkinter и питоном вообще мне пришлось на заказ писать одну программу. Полностью ее я вывешивать не буду, чтобы не позориться, но тот кусок, который отвечал за закладки могу и показать. Единственное ограничение - там закладки не могли отображаться каскадом, а отображались только в линию. Хотя, я думаю, можно и допедалировать…Если очень нужо, то я выложу, но за качество кода не отвечаю :) Сам был зеленый - зеленый + клиент был дубовый - дубовый…

Если есть возможность - код в студию! Каскадность там не нужна. всего 4-5 вкладок…








sp3
import Tkinter
import ttk
root = Tkinter.Tk()
n = ttk.Notebook(root)
n.pack(fill='both', expand=True)
pages = []
for page in range(5):
    child = ttk.Frame(root)
    lab = ttk.Label(child, text='text %i'%page)
    lab.pack()
    n.add(child, text ='page %i'%page )
    pages.append(child)
    
textForPage1 = Tkinter.Text(pages[1])
textForPage1.pack(fill='both', expand=True)
root.mainloop()
4kpt
sp3
Спасибо. Мне не пришлось свой левый код выкладывать. Надо будет по ttk документацию почитать. Вижу много чего из него можно вытянуть :)
4kpt
sp3
Заодно вопросик. Почему некоторый код, который дан в документации к ttk не работает на 2.x?
Получается, что ttk заточен по 3.х
sp3
Какой код?
4kpt
Да ну хотя-бы этот?
import ttk
import Tkinter
root = Tkinter.Tk()
ttk.Style().configure("TButton", padding=10, relief="sunken", background="red")
btn = ttk.Button(text="Sample", style="TButton")
btn.pack()
root.mainloop()
sp3
2.6 - все работает
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