Tutoriel Tkinter - Bouton de contrôle

Jinku Hu 30 janvier 2023 23 janvier 2020 Tkinter Tkinter Checkbutton
  1. Exemple de base de bouton de contrôle Tkinter
  2. Bouton de contrôle Tkinter Sélectionner/Désélectionner
  3. Basculement de l’état du bouton de contrôle Tkinter
  4. Liaison des fonctions de rappel des boutons de contrôle Tkinter
  5. Changer la valeur par défaut de Tkinter Checkbutton
Tutoriel Tkinter - Bouton de contrôle

Le widget Checkbutton est un widget contenant une valeur. Les checkbuttons peuvent contenir du texte ou des images. Il pourrait aussi lier la fonction de rappel à appeler lorsque le bouton de contrôle est cliqué.

Pour créer un widget de bouton de contrôle dans une fenêtre parentale existante, utilisez

tk.Checkbutton(parent, option, ...)

Exemple de base de bouton de contrôle Tkinter

import tkinter as tk
 
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.BooleanVar() 
chkValue.set(True)
 
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue) 
chkExample.grid(column=0, row=0)
 
app.mainloop()

Tkinter Tutorial Checkbutton Exemple de base

chkValue = tk.BooleanVar() 

Chaque bouton de contrôle doit être associé à une variable. Le type de données de la variable est déterminé par le bouton de contrôle lorsqu’il est sélectionné/désélectionné.

chkValue.set(True)

Il définit la valeur d’origine du bouton de contrôle. Comme il est juste assigné avec le type de données boolean, vous n’avez que deux options ici, True ou False.

chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue) 

Maintenant, l’instance du bouton de contrôle est finalement créée avec la variable chkValue que nous avons créée ci-dessus.

chkExample.grid(column=0, row=0)

grid est un autre type de gestionnaire de disposition Tkinter en plus du pack introduit dans la section Tkinter Label.

Tkinter a trois gestionnaires de disposition/géométrie,

  • pack
  • grid
  • place

Nous allons présenter ces gestionnaires de disposition/géométrie dans une section de ce tutoriel.

Bouton de contrôle Tkinter Sélectionner/Désélectionner

L’utilisateur peut cliquer sur le bouton de contrôle dans l’interface graphique pour sélectionner ou désélectionner le bouton. Vous pouvez aussi sélectionner ou désélectionner le bouton de contrôle en utilisant les méthodes select() et deselect().

chkExample.select()
print "The checkbutton value when selected is {}".format(chkValue.get())
chkExample.select()
print "The checkbutton value when deselected is {}".format(chkValue.get())
The checkbutton value when selected is True
The checkbutton value when deselected is False

Ici, la valeur du bouton de contrôle est obtenue par la méthode get().

Basculement de l’état du bouton de contrôle Tkinter

L’état du bouton de vérification peut être modifié par select() et deselect(), et il peut aussi être basculé en utilisant la méthode toggle().

import tkinter as tk
 
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.BooleanVar() 
chkValue.set(True)
 
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue) 
chkExample.grid(column=0, row=0)


print "The checkbutton original value is {}".format(chkValue.get())
chkExample.toggle()
print "The checkbutton value after toggled is {}".format(chkValue.get())
chkExample.toggle()
print "The checkbutton value after toggled twice is {}".format(chkValue.get())

app.mainloop()
The checkbutton original value is True
The checkbutton value after toggled is False
The checkbutton value after toggled twice is True

Liaison des fonctions de rappel des boutons de contrôle Tkinter

Le widget Checkbutton est utilisé pour sélectionner les états et il peut également lier la fonction de rappel à l’événement lorsqu’il est sélectionné/désélectionné, ou plus simplement, basculé. Chaque fois que l’état du bouton de contrôle est basculé, la fonction de rappel est déclenchée.

import tkinter as tk
from _cffi_backend import callback
 
def callBackFunc():
    print "Oh. I'm clicked"
    
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.BooleanVar() 
chkValue.set(True)
 
chkExample = tk.Checkbutton(app, text='Check Box', 
                            var=chkValue, command=callBackFunc) 
chkExample.grid(column=0, row=0)

app.mainloop()

Chaque fois que vous appuyez sur le bouton de contrôle, vous pouvez voir qu’il affiche Oh. I'm clicked dans la console.

L’option command dans la classe Checkbutton est destinée à lier la fonction ou la méthode de rappel lorsque le bouton est pressé.

Changer la valeur par défaut de Tkinter Checkbutton

La valeur par défaut correspondant au bouton non sélectionné est 0, et la valeur par défaut du bouton sélectionné est 1. Et vous pouvez également changer les valeurs par défaut des boutons et leur type de données associé à l’autre valeur et/ou type de données.

import tkinter as tk
 
app = tk.Tk() 
app.geometry('150x100')

chkValue = tk.StringVar() 
 
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue,
                            onvalue="RGB", offvalue="YCbCr") 
chkExample.grid(column=0, row=0)

chkExample.select()
print "The checkbutton value when selected is {}".format(chkValue.get())
chkExample.deselect()
print "The checkbutton value when deselected is {}".format(chkValue.get())

app.mainloop()
The checkbutton value when selected is RGB
The checkbutton value when deselected is YCbCr
chkExample = tk.Checkbutton(app, text='Check Box', var=chkValue,
                            onvalue="RGB", offvalue="YCbCr") 

Les options onvalue et offvalue permettent de modifier les valeurs des états sélectionnés et non-sélectionnés. Ils peuvent avoir des types de données comme Int, String, Float ou autres.

Attention
Le type de données Tkinter associé au bouton de contrôle doit être le même que celui de onvalue et offvalue. Sinon, il rapporte _tkinter.TclError.
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn