Démarrer avec tkinter

Installation ou configuration

Tkinter est préinstallé avec les binaires d’installation Python pour Mac OS X et la plate-forme Windows. Donc, si vous installez Python à partir des [binaires officiels] [1] pour la plate-forme Mac OS X ou Windows, vous êtes prêt à utiliser Tkinter.

Pour les versions Debian de Linux, vous devez l’installer manuellement en utilisant les commandes suivantes.

Pour Python 3

sudo apt-get install python3-tk

Pour Python 2.7

sudo apt-get install python-tk

Les distributions Linux avec le programme d’installation yum peuvent installer le module tkinter à l’aide de la commande :

miam installer tkinter

Vérification de l’installation

Pour vérifier si vous avez bien installé Tkinter, ouvrez votre console Python et tapez la commande suivante :

import tkinter as tk # for Python 3 version

ou

import Tkinter as tk # for Python 2.x version

Vous avez installé avec succès Tkinter, si la commande ci-dessus s’exécute sans erreur.

Pour vérifier la version de Tkinter, tapez les commandes suivantes dans votre REPL Python :

Pour python 3.X

import tkinter as tk
tk._test()

Pour python 2.X

import Tkinter as tk
tk._test()

Remarque : L’importation de Tkinter en tant que tk n’est pas obligatoire, mais c’est une bonne pratique car cela permet de garder les choses cohérentes entre les versions.

[1] : https://www.python.org/downloads/ [2] : http://www.tcl.tk/software/tcltk/download.html

Bonjour le monde! (modulaire, orienté objet)

import tkinter as tk

class HelloWorld(tk.Frame):
    def __init__(self, parent):
        super(HelloWorld, self).__init__(parent)

        self.label = tk.Label(self, text="Hello, World!")
        self.label.pack(padx=20, pady=20)
        
if __name__ == "__main__":
    root = tk.Tk()

    main = HelloWorld(root)
    main.pack(fill="both", expand=True)

    root.mainloop()

Remarque : Il est possible d’hériter de presque n’importe quel widget tkinter, y compris la fenêtre racine. L’héritage de tkinter.Frame est au moins sans doute le plus flexible dans la mesure où il prend en charge plusieurs interfaces de documents (MDI), interfaces de document unique (SDI), applications à page unique et applications à plusieurs pages applications.

Bonjour le monde! (minimal)

Testons nos connaissances de base sur tkinter en créant le classique “Hello, World!” programme.

Tout d’abord, nous devons importer tkinter, cela variera en fonction de la version (voir la section des remarques sur les “Différences entre Python 2 et 3”)

En Python 3, le module tkinter a un t minuscule :

import tkinter as tk

En Python 2, le module Tkinter a un T majuscule :

import Tkinter as tk 

L’utilisation de as tk n’est pas strictement nécessaire, mais nous l’utiliserons pour que le reste de cet exemple fonctionne de la même manière pour les deux versions.

maintenant que nous avons importé le module tkinter, nous pouvons créer la racine de notre application en utilisant la classe Tk :

root = tk.Tk()

Cela servira de fenêtre pour notre application. (notez que les fenêtres supplémentaires doivent être des instances de Toplevel à la place)

Maintenant que nous avons une fenêtre, ajoutons-y du texte avec un Label

label = tk.Label(root, text="Hello World!") # Create a text label
label.pack(padx=20, pady=20) # Pack it into the window

Une fois l’application prête, nous pouvons la démarrer (entrer l’événement main loop) avec la méthode mainloop

root.mainloop()

Cela ouvrira et exécutera l’application jusqu’à ce qu’elle soit arrêtée par la fermeture de la fenêtre ou l’appel de fonctions sortantes à partir de rappels (discutés plus tard) telles que root.destroy().

Mettre tous ensemble:

import tkinter as tk # Python 3.x Version
#import Tkinter as tk # Python 2.x Version

root = tk.Tk()

label = tk.Label(root, text="Hello World!") # Create a text label
label.pack(padx=20, pady=20) # Pack it into the window

root.mainloop()

Et quelque chose comme ça devrait apparaître :

[![fenêtre tkinter][2]][2]

[1] : https://www.wikiod.com/fr/tkinter/fenetres-multiples-widgets-toplevel [2] : http://i.stack.imgur.com/DreFs.png