tkinter
De Tkinter Entry Widget
Zoeken…
Syntaxis
- entry = tk.Entry ( ouder , ** kwargs )
- entry.get ()
- entry.insert (index, "waarde")
- entry.delete (start_index, end_index)
- entry.bind (evenement, terugbellen)
parameters
Parameter | Beschrijving |
---|---|
ouder | tkinter-widgets bestaan in een hieararchie. Behalve het root-venster hebben alle widgets een ouder. Sommige online tutorials noemen dit "master". Wanneer de widget met pack , place of grid aan het scherm wordt toegevoegd, verschijnt deze in deze bovenliggende widget |
breedte | De breedte geeft de gewenste breedte van de widget aan op basis van een gemiddelde tekenbreedte. Voor lettertypen met variabele breedte is dit gebaseerd op de breedte van het nul-teken ( 0 ). De standaardwaarde is 20. Merk op dat de werkelijke breedte groter of kleiner kan zijn, afhankelijk van hoe deze aan het scherm wordt toegevoegd. |
Opmerkingen
Deze voorbeelden gaan ervan uit dat tkinter is geïmporteerd met import tkinter as tk
(python 3) of import Tkinter as tk
(python 2).
Een invoerwidget maken en een standaardwaarde instellen
entry = tk.Entry(parent, width=10)
entry.insert(0, "Hello, World!")
De waarde van een Entry-widget verkrijgen
De waarde van een invoerwidget kan worden verkregen met de methode get
van de widget:
name_entry = tk.Entry(parent)
...
name = name_entry.get()
Desgewenst kunt u een exemplaar van een StringVar
en de waarde ophalen uit StringVar
plaats van uit de widget:
name_var = tk.StringVar()
name_entry = tk.Entry(parent, textvariable=name_var)
...
name = name_var.get()
Validatie toevoegen aan een Entry-widget
Om het aantal tekens te beperken dat in een invoerwidget kan worden getypt, kunnen bijvoorbeeld alleen cijfers een validatieopdracht aan de invoer worden toegevoegd. Een validatieopdracht is een functie die True
retourneert als de wijziging wordt geaccepteerd, anders False
. Deze functie wordt elke keer aangeroepen wanneer de inhoud van het item wordt gewijzigd. Aan deze functie kunnen verschillende argumenten worden doorgegeven, zoals het type wijziging (invoegen, verwijderen), de ingevoegde tekst, ...
def only_numbers(char):
return char.isdigit()
validation = parent.register(only_numbers)
entry = Entry(parent, validate="key", validatecommand=(validation, '%S'))
De validate
bepaalt het type gebeurtenis dat de validatie activeert, hier is dit elke toetsaanslag in het item. De '%S'
in de optie validatecommand betekent dat het ingevoegde of verwijderde teken als argument wordt doorgegeven aan de functie only_numbers
. De volledige lijst met mogelijkheden vindt u hier .
Int van Entry Widget krijgen
Als u de methode .get () gebruikt, wordt alles wat zich in de invoerwidget bevindt, omgezet in een tekenreeks. Ongeacht het type invoer (dit kan een getal of zin zijn), is de resulterende uitkomst een tekenreeks. Als de gebruiker 4 typt, is de uitvoer "4" zoals in een string. Om een int van een Entry Widget te krijgen, roept u eerst de .get () methode aan.
What_User_Wrote = Entry.get()
Nu zetten we die string om in een int als volgt:
Convert_To_Int = int(What_User_Wrote)
Evenzo, als u tijd wilt besparen, kunt u eenvoudig doen:
Convert_To_Int = int(Entry.get())
Je kunt de bovenstaande methode gebruiken als je str niet naar int wilt converteren.