Tkinter
Tkinter is a graphical library for Python. It allows you to create graphical user interfaces (GUIs) in a simple and quick manner.
Getting Started
On macOS, you might need to install the library with pip install tk
.
Two Buttons and a Text
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
The ttk
components are improved components of Tkinter. They are more modern, more visually appealing, and better adapt to the OS (Operating System). For example, they use the colors of the OS theme (such as dark mode).
ttk Components
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()
Editable Text
Editable Text
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()
Editable Text + Adding Content on the Fly
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()