tkinterAan de slag met tkinter


Opmerkingen

Tkinter (" Tk Inter face") is het standaard platformoverschrijdende pakket van Python voor het maken van grafische gebruikersinterfaces (GUI's). Het biedt toegang tot een onderliggende Tcl-interpreter met de Tk-toolkit, die zelf een platformonafhankelijke, meertalige grafische gebruikersinterfacebibliotheek is.

Tkinter is niet de enige GUI-bibliotheek voor python, maar het is degene die standaard wordt geleverd. Extra GUI-bibliotheken die kunnen worden gebruikt met python zijn wxPython , PyQt en kivy .

De grootste kracht van Tkinter is de alomtegenwoordigheid en eenvoud. Het werkt direct op de meeste platforms (Linux, OSX, Windows) en wordt geleverd met een breed scala aan widgets die nodig zijn voor de meest voorkomende taken (knoppen, labels, tekenpapier, tekst met meerdere regels, enz.).

Als leermiddel heeft tkinter enkele functies die uniek zijn onder GUI-toolkits, zoals benoemde lettertypen, bind-tags en variabele tracering.

Verschillen tussen python 2 en 3

Tkinter is grotendeels ongewijzigd tussen python 2 en python 3, met het grote verschil dat het tkinter-pakket en de modules zijn hernoemd.

Importeren in python 2.x

In python 2.x heet het tkinter-pakket Tkinter en hebben gerelateerde pakketten hun eigen namen. Hieronder ziet u bijvoorbeeld een typische set importinstructies voor python 2.x:

import Tkinter as tk
import tkFileDialog as filedialog
import ttk

Importeren in python 3.x

Hoewel de functionaliteit tussen python 2 en 3 niet veel is veranderd, zijn de namen van alle tkinter-modules gewijzigd. Het volgende is een typische set importinstructies voor python 3.x:

import tkinter as tk
from tkinter import filedialog
from tkinter import ttk

Verder lezen

versies

Tcl

Versie Publicatiedatum
8.6 2016/07/27
8.5 2016/02/12
8.4 2013/06/01
8.3 2002/10/18
8.2 1999/12/16
8.1 1999/05/26
8.0 1999/03/09

Python

Versie Publicatiedatum
3.6 2016/12/23
3.5 2015/09/13
3.4 2014/03/17
3.3 2012/09/29
3.2 2011-02-20
3.1 2009-06-26
3.0 2008-12-03
2.7 2010-07-03
2.6 2008-10-02
2.5 2006-09-19
2.4 2004-11-30
2.3 2003-07-29
2.2 2001/12/21
2.1 2001/04/15
2.0 2000/10/16

Hallo Wereld! (minimaal)

Laten we onze basiskennis van tkinter testen door de klassieke "Hallo wereld!" programma.

Eerst moeten we tkinter importeren, dit zal variëren op basis van versie (zie opmerkingen sectie over "Verschillen tussen Python 2 en 3")

In Python 3 heeft de module tkinter een kleine letter t:

import tkinter as tk
 

In Python 2 heeft de module Tkinter een hoofdletter T:

import Tkinter as tk 
 

Gebruik as tk is niet strikt noodzakelijk, maar we zullen het gebruiken, zodat de rest van dit voorbeeld voor beide versies hetzelfde werkt.

nu we de tkinter-module hebben geïmporteerd, kunnen we de root van onze applicatie maken met behulp van de Tk klasse:

root = tk.Tk()
 

Dit fungeert als het venster voor onze applicatie. (merk op dat extra vensters in plaats daarvan Toplevel instanties moeten zijn)

Nu we een venster hebben, laten we er tekst aan toevoegen met een Label

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

Zodra de applicatie klaar kunnen wij starten (geef de belangrijkste gebeurtenis lus) met mainloop methode

root.mainloop()
 

Hiermee wordt de toepassing geopend en uitgevoerd totdat deze wordt gestopt door het venster dat wordt gesloten of door het verlaten van functies van callbacks (later besproken) zoals root.destroy() .

Alles bij elkaar genomen:

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

En zoiets zou moeten verschijnen:

tkinter-venster

Hallo Wereld! (modulair, objectgericht)

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

Opmerking: het is mogelijk om van vrijwel elke tkinter-widget te erven, inclusief het rootvenster. Het overnemen van tkinter.Frame is op zijn minst de meest flexibele omdat het ondersteuning biedt voor meerdere documentinterfaces (MDI), single document interfaces (SDI), single page-applicaties en multiple-page applicaties.

Installatie of instellingen

Tkinter wordt vooraf geïnstalleerd met de binaire bestanden van het Python-installatieprogramma voor Mac OS X en het Windows-platform. Dus als u Python installeert vanuit de officiële binaries voor Mac OS X of Windows-platform, bent u goed om te gaan met Tkinter.

Voor Debian-versies van Linux moet u het handmatig installeren met behulp van de volgende opdrachten.

Voor Python 3

sudo apt-get install python3-tk

Voor Python 2.7

sudo apt-get install python-tk

Linux distros met yum installer kunnen de tkinter-module installeren met behulp van de opdracht:

yum installeer tkinter

Installatie verifiëren

Om te controleren of u Tkinter hebt geïnstalleerd, opent u uw Python-console en typt u de volgende opdracht:

import tkinter as tk # for Python 3 version
 

of

import Tkinter as tk # for Python 2.x version
 

U hebt Tkinter met succes geïnstalleerd als de bovenstaande opdracht zonder fouten wordt uitgevoerd.

Typ de volgende opdrachten in uw Python REPL om de Tkinter-versie te controleren:

Voor python 3.X

import tkinter as tk
tk._test()
 

Voor python 2.X

import Tkinter as tk
tk._test()
 

Opmerking: Tkinter as tk importeren Tkinter as tk is niet vereist, maar is een goede gewoonte omdat het helpt om de dingen tussen de versies consistent te houden.