- English: This page isn't translated to English.
Tkinter
Tkinter est une bibliothèque graphique pour Python. Elle permet de créer des interfaces graphiques (GUI) de manière simple et rapide.
Premiers pas
Sur macOS, il faut probabelemnt installer la librairie pip install tk
Deux boutons et un texte
import tkinter as tk
# widget ou controle: tout composant de l'interface graphique: bouton, label, image, etc. (windows + gadget)
window = tk.Tk()
window.geometry("600x300")
label = tk.Label(window, text="Hello World")
def print_message():
print("Button clicked")
def change_size():
print("Nouvelle dimension de fenêtre")
window.geometry("500x200")
# command: on dit que c'est une callback
button = tk.Button(window, text="Click Me", command=print_message)
button2 = tk.Button(window, text="Click Me Here", command=change_size)
# Lay or put the widgets into the window
button.pack()
label.pack()
button2.pack()
# pour placer une ligne de code
tk.Label(window, text="Autre texte").pack()
window.mainloop()
TTk
Les composants ttk
sont des composants améliorés de Tkinter. Ils sont plus modernes, plus jolis et s'adaptent mieux à l'OS (Operating System). Par exemple, ils utilisent les couleurs du thème de l'OS (mode sombre par exemple).
Composants ttk
import tkinter as tk
from tkinter import ttk
# widget: tout composant de l'interface graphique: bouton, label, image, etc. (windows + gadget)
window = tk.Tk()
window.geometry("600x300")
label = ttk.Label(window, text="Hello World")
def print_message():
print("Button clicked")
def change_size():
print("Nouvelle dimension de fenêtre")
window.geometry("500x200")
# command: on dit que c'est une callback
button = ttk.Button(window, text="Click Me", command=print_message)
button2 = ttk.Button(window, text="Click Me Here", command=change_size)
button.pack()
label.pack()
button2.pack()
# pour placer une ligne de code
ttk.Label(window, text="Autre texte").pack()
window.mainloop()
Texte editable
Texte editable
import tkinter as tk
from tkinter import ttk
window = tk.Tk()
window.geometry("600x300")
entered_text = tk.StringVar()
textbox = ttk.Entry(window, textvariable=entered_text)
textbox.pack()
def run_prompt():
print("prompt saisi", entered_text.get())
print("prompt saisi", textbox.get())
response = f"Réponse à la main pour le prompt {entered_text.get()}. A remplacer par une vraie réponse"
print("réponse", response)
def reset_entry():
entered_text.set("")
run_button = ttk.Button(window, text="Run", command=run_prompt)
run_button.pack()
clear_button = ttk.Button(window, text="Clear", command=reset_entry)
clear_button.pack()
window.mainloop()
Texte editable + ajout de contenu à la volée
import tkinter as tk
from tkinter import ttk
from datetime import datetime
prompts = []
window = tk.Tk()
window.geometry("600x300")
entered_text = tk.StringVar()
history_content = tk.StringVar()
textbox = ttk.Entry(window, textvariable=entered_text)
textbox.pack()
def run_prompt():
print("prompt saisi", entered_text.get())
print("prompt saisi", textbox.get())
response = f"Réponse à la main pour le prompt {entered_text.get()}. A remplacer par une vraie réponse"
print("réponse", response)
prompt = {
"query": entered_text.get(),
"response": response,
"date": datetime.now(),
}
prompts.append(prompt)
print(prompts)
temp_history_content = ""
for prompt in prompts:
temp_history_content += f"query: {prompt['query']} \n"
temp_history_content += f"responst: {prompt['response']} \n"
temp_history_content += f"date: {prompt['date']} \n"
temp_history_content += f"\n--------------\n"
history_content.set(temp_history_content)
def reset_entry():
entered_text.set("")
run_button = ttk.Button(window, text="Run", command=run_prompt)
run_button.pack()
clear_button = ttk.Button(window, text="Clear", command=reset_entry)
clear_button.pack()
history = ttk.Label(window, textvariable=history_content)
history.pack()
window.mainloop()