web-dev-qa-db-fra.com

Nouveau tutoriel sur tkinter et ttk pour Python 3

Où puis-je trouver le tutoriel le plus moderne qui enseigne tkinter avec ttk ?

Tkinter semble être le seul moyen d'entrer Python 3 (ne suggère pas Python 2)), et ttk a donné J'espère que l'interface graphique sera belle.

54
Oleh Prypin

J'ai trouvé le tutoriel TkDocs très utile. Il décrit la construction de Tk interfaces à l’aide de Python et Tkinter et ttk, et note les différences entre Python = 2 et 3. Il a aussi des exemples en Perl, Ruby et Tcl, puisque le but est d’enseigner Tk lui-même, pas les liaisons pour une langue particulière.

Je n'ai pas parcouru tout ça du début à la fin, j'ai plutôt utilisé un certain nombre de sujets comme exemples de choses sur lesquelles j'étais coincé, mais c'est très instructif et d'une écriture agréable. Aujourd'hui, la lecture de l'intro et des premières sections me laisse penser que je vais commencer à travailler sur le reste.

Enfin, c’est courant et le site a un look très sympa. Il a également un tas d'autres pages qui valent le détour (Widgets, Ressources, Blog). Ce gars fait beaucoup pour non seulement enseigner le tk, mais aussi pour aider les gens à comprendre que ce n'est plus la vilaine bête.

52
Todd

Je recommande le référence NMT Tkinter 8.5 .

Les noms de module utilisés dans certains exemples sont ceux utilisés dans Python 2.7.
Voici une référence pour les changements de nom dans Python 3: lien

L’une des commodités de ttk est que vous pouvez choisir un thème préexistant thème ,
qui est un ensemble complet de Styles appliqués aux widgets ttk .

Voici un exemple que j'ai écrit (pour Python 3) qui vous permet de sélectionner n'importe quel thème disponible dans un combobox :

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()

Note latérale: J'ai remarqué qu'il existe un thème 'Vista' disponible lors de l'utilisation de Python 3.3 (mais pas 2.7).

20
Honest Abe

Je recommande de lire le documentation . C'est simple et autoritaire, et bon pour les débutants.

3
vy32

Ce n'est pas vraiment frais mais this est concis, et d'après ce que j'ai vu, cela vaut aussi pour Python 2 et 3.

0
Carel