Свежий урок по tkinter и ttk для Python 3
Где я могу найти самый современный учебник, который учит tkinter
вместе с ttk
?
Tkinter
кажется, единственный путь в Python 3 (не предлагать Python 2), и ttk
дал мне надежду на красивый графический интерфейс.
4 ответа
Я нашел учебник TkDocs очень полезным. Описывает строительство Tk
интерфейсы, использующие Python и Tkinter
а также ttk
и делает заметки о различиях между Python 2 и 3. У него также есть примеры на Perl, Ruby и Tcl, поскольку цель состоит в том, чтобы научить самому Tk, а не привязкам для конкретного языка.
Я не прошел через все это от начала до конца, скорее использовал только несколько тем в качестве примеров того, на чем я застрял, но это очень наглядно и удобно написано. Сегодня чтение вступления и первых нескольких разделов заставляет меня думать, что я начну прорабатывать оставшуюся часть.
Наконец, это актуально, и сайт выглядит очень красиво. У него также есть куча других страниц, которые стоит проверить (Widgets, Resources, Blog). Этот парень много делает для того, чтобы не только учить Тк, но и улучшить понимание людьми того, что когда-то это был не уродливый зверь.
Я рекомендую ссылку NMT Tkinter 8.5.
- Тематические виджеты
- Настройка и создание тем и стилей ttk
- Поиск и использование тем
- Использование и настройка стилей ttk
- Слой элемента ttk
Имена модулей, используемые в некоторых примерах, те же, что и в Python 2.7.
Вот ссылка на изменения имени в Python 3: ссылка
Одним из удобств ttk является то, что вы можете выбрать существующий ранее тема,
который представляет собой полный набор стилей, применяемых к виджетам ttk.
Вот пример, который я написал (для Python 3), который позволяет вам выбрать любую доступную тему из комбинированного списка:
import random
import tkinter
from tkinter import ttk
from tkinter import messagebox
class App(object):
def __init__(self):
self.root = tkinter.Tk()
self.style = ttk.Style()
available_themes = self.style.theme_names()
random_theme = random.choice(available_themes)
self.style.theme_use(random_theme)
self.root.title(random_theme)
frm = ttk.Frame(self.root)
frm.pack(expand=True, fill='both')
# create a Combobox with themes to choose from
self.combo = ttk.Combobox(frm, values=available_themes)
self.combo.pack(padx=32, pady=8)
# make the Enter key change the style
self.combo.bind('<Return>', self.change_style)
# make a Button to change the style
button = ttk.Button(frm, text='OK')
button['command'] = self.change_style
button.pack(pady=8)
def change_style(self, event=None):
"""set the Style to the content of the Combobox"""
content = self.combo.get()
try:
self.style.theme_use(content)
except tkinter.TclError as err:
messagebox.showerror('Error', err)
else:
self.root.title(content)
app = App()
app.root.mainloop()
Примечание: я заметил, что при использовании Python 3.3 доступна тема "vista" (но не 2.7).
Я рекомендую прочитать документацию. Это просто и авторитетно, и хорошо для начинающих.
Это не совсем свежо, но это сжато, и из того, что я видел, подходит для Python 2 и 3.