Свежий урок по 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.

Имена модулей, используемые в некоторых примерах, те же, что и в 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.

Другие вопросы по тегам