Уведомления

Группа в Telegram: @pythonsu

#1 Июль 3, 2013 20:49:35

RoDebian
Зарегистрирован: 2013-06-26
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter-вкладки

Друзья подскажите пожалуйста как в Tkinter сделать вкладки?
По возможности если несложно то предоставте примеры чтоб вникнуть. Заранее благодарю!

Офлайн

#2 Июль 3, 2013 21:07:26

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Tkinter-вкладки

В Tkinter нет, но есть в ttk. Называются notebook.



Офлайн

#3 Июль 3, 2013 21:29:20

RoDebian
Зарегистрирован: 2013-06-26
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter-вкладки

спасибо добрый человек!

Офлайн

#4 Июль 3, 2013 21:33:42

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Tkinter-вкладки

Пример. Где - то на форуме был, но я быстро собрал свой. Не могу найти.

import ttk
root = ttk.Tkinter.Tk()
root.geometry("400x400+100+100")
note = ttk.Notebook(root)
note.pack(fill="both", expand=True)
for name in xrange(1, 10):
    notes = ttk.Frame(root)
    lab = ttk.Label(notes, text='This is text for note №%s' % name)
    lab.pack()
    note.add(notes, text ='note %s' % name)
root.mainloop()

P.S. На будущее. Это тема должна быть в разделе GUI.

P.S.S. Это не самое элегантное дизайнерское решение. От него уже все отказываются. Получается плохая ментальная модель. Может лучше я предложу другое :)



Отредактировано 4kpt (Июль 3, 2013 21:35:17)

Офлайн

#5 Июль 3, 2013 21:39:01

RoDebian
Зарегистрирован: 2013-06-26
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter-вкладки

Раздел ведь называется “Центр помощи” а в ней я нуждался как никогда а что можете предложить другого?

Офлайн

#6 Июль 3, 2013 21:40:53

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Tkinter-вкладки

Все, что связано с Tkinter, wxpython, PyQt - в разделе GUI.
Предложить могу следующее решение:
Слева - список с категориями, справа - настройка этих категорий.
Нужен пример - пишите.



Офлайн

#7 Июль 3, 2013 21:43:49

RoDebian
Зарегистрирован: 2013-06-26
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter-вкладки

буду иметь ввиду, возможно ли пост перенести в другую ветку?

пример бы не помешал, а то я не совсем понял что вы имели ввиду

Офлайн

#8 Июль 3, 2013 22:00:29

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Tkinter-вкладки

Позже. Сейчас убегаю…



Офлайн

#9 Июль 3, 2013 22:59:49

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Tkinter-вкладки

Если по-быстрому, то

import Tkinter
def new_page(event=None):
    num_page = int(event.widget.curselection()[0]) + 1
    labl["text"] = labl["text"][:-1] + str(num_page)
root = Tkinter.Tk()
listb = Tkinter.Listbox(root, height=5)
listb.insert("end", *[i for i in xrange(1, 6)])
listb.pack(side="left")
listb.bind("<ButtonRelease-1>", new_page)
labl = Tkinter.Label(root, text="Text or lines for page 1")
labl.pack(side="right")
root.mainloop()

Вместо labl можно использовать frame с упакоавнными в него виджетами. В результате, каждый выбор слева приведет к отображению новой страницы справа. В этой странице пользователь выполняет настройки. При выборе следующей страницы слева приводит с сохранению данных справа. Такое меню настроек реализовано в OpenOffice. Я его считаю верхом гениальности. Пользователи значительно проще запоминают варианты. Кроме того у этого метода очень хорошая ментальная модель. Есть еще вариант с мастером, но в этом случае желательна фиксированная последовательность действий настройки или выбора. Выбирать Вам. Но я все же настоятельно не рекомендую вкладки. Это плохой тон в дизайне интерфейсов :)



Офлайн

#10 Июль 4, 2013 17:03:28

RoDebian
Зарегистрирован: 2013-06-26
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter-вкладки

очень интересный подход! спасибо!

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version