Argumenten doorgeven aan Tkinter Button Command

  1. Argumenten command doorgeven aan in Tkinter-knop met partials
  2. Argumenten command doorgeven aan in Tkinter-knop met lambda functie

command optie in Tkinter- Button widget wordt geactiveerd wanneer de gebruiker op de knop drukt. In sommige scenario’s moet u argumenten doorgeven aan de bijgevoegde opdrachtfunctie, maar je kan de argumenten zoals hieronder niet doorgeven,

button = tk.Button(app, text="Press Me", command=action(args))

We zullen twee manieren introduceren om de argumenten door te geven aan de opdrachtfunctie.

Argumenten command doorgeven aan in Tkinter-knop met partials

Zoals aangetoond in de Python Tkinter tutorial , hebt u de optie om het partial object uit de functools module te gebruiken.

from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    
from functools import partial
    

    
app = tk.Tk()
labelExample = tk.Button(app, text="0")

def change_label_number(num):
    counter = int(str(labelExample['text']))
    counter += num
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=partial(change_label_number, 2))

buttonExample.pack()
labelExample.pack()
app.mainloop()
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=partial(change_label_number, 2))

partial(change_label_numer, 2) retourneert een opvraagbaar object dat zich gedraagt ​​als een func wanneer het wordt aangeroepen.

Argumenten command doorgeven aan in Tkinter-knop met lambda functie

Je kan ook de Python- lambda operator of -functie gebruiken om een ​​tijdelijke, eenmalige eenvoudige functie te maken die wordt opgeroepen wanneer erop Button wordt geklikt.

from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    

    
app = tk.Tk()
labelExample = tk.Button(app, text="0")

def change_label_number(num):
    counter = int(str(labelExample['text']))
    counter += num
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=lambda: change_label_number(2))

buttonExample.pack()
labelExample.pack()
app.mainloop()

De syntaxis van lambda functie is

lambda: argument_list: expression

Je hebt in dit voorbeeld geen argumenten nodig, daarom kan je de lijst met argumenten leeg laten en alleen de uitdrukking schrijven.

buttonExample = tk.Button(app, text="Increase", width=30,
                          command=lambda: change_label_number(2))

Gerelateerde Artikelen - Tkinter Button

  • Een Tkinter-venster sluiten met een knop
  • Hoe de status van de Tkinter-knop te wijzigen
  • Hoe een nieuw venster te maken door op een knop in Tkinter te klikken