Déplacer un objet graphique tkinter # On place 6 objets (cercles avec label) dans un canvas tkinter et on souhaite que l’utilisateur puisse les déplacer à la souris par drag and drop.
L’idée générale est d’associer des /tags/ tkinter aux objets. On peut ensuite déplace les objets par tag. Si deux objets ont le même tag, ils sont déplacés en même temps (le cercle et le label).
#!/usr/bin/env python3 import tkinter as tk class Fenetre(tk.
Exemple d’utilisation de Flask # Example flask contenant :
redirection code d’erreur (ici 403) avec abort récupération des paramètres GET récupération des paramètres POST réalisation d’un formulaire utilisation d’un template Jinja2 utilisation de url_for renvoi de données au format Json (pour Api Rest) Enregistrer les deux fichiers dans le même répertoire :
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- ======================= head ========================== --> <title>Titre : {{ title }}</title> </head> <body> <div> {{ data | safe }} </div> <div id="footer"> <hr/> <a href="{{ url_for('info') }}">home</a> - <a href="{{ url_for('paramurl', number=42) }}">paramurl</a> - <a href="{{ url_for('formulaire') }}">formulaire</a> - <a href="{{ url_for('paramget') }}?
FAQ Tkinter # Widgets de base # Les petits programmes qui suivent sont tous fonctionnels. En règle générale, les variables qui sont accédées à plusieurs endroits du programme sont stockées dans un dictionnaire, de manière à n’avoir finalement qu’une seule variable globale.
Bouton # import tkinter as tk def bouton_cb(): print("Vous avez cliqué") def gui(root): frame = tk.Frame(root) frame.pack(expand=1, fill='both') open_button = tk.Button(frame, text="Bouton", command=bouton_cb) open_button.pack(padx=8, pady=8) root = tk.
Lecture fichier de données avec Python # On a le fichier suivant, contenant login, password et id numérique :
toto:monpass:1234 titi:passwd:3615 tata:superpwd:42 Si votre fichier est un fichier csv, regardez en premier la lecture de fichier avec le module csv…
Lecture sans le module csv # On peut le lire et le traiter en Python ainsi :
with open("fic_pass.txt", "r") as f: lignes = f.readlines() # lignes est une liste dont chaque élément # est une ligne du fichier print(lignes) # On enlève les retours chariot en fin de ligne lignes_2 = [l.
Manipuler des tuiles avec PIL # import requests from PIL import Image import io url = "https://tile.openweathermap.org/map/temp/5/{x}/{y}.png?appid=cc632d052631a2d2e590f930e6873b6e" # url2 = "https://tile.openstreetmap.org/map/temp/5/{x}/{y}.png" liste = [url.format(x=x, y=y) for x in range(15, 17) for y in range(15, 17)] # liste2 = [url2.format(x=x, y=y) for x in range(15, 17) for y in range(15, 17)] liste_im = [] for l in liste: r = requests.get(l) i = Image.open(io.BytesIO(r.content)) liste_im.append(i) w, h = liste_im[0].size new_im = Image.
Requêtes GET/POST en Python # On peut utiliser le module requests (s’il est installé) ou bien urlopen de la bibliothèque standard.
Documentation urllib : https://docs.python.org/3/library/urllib.request.html Documentation requests : http://docs.python-requests.org/en/master/ Requête Get sans paramètre # from urllib import request res = urllib.request.urlopen("http://httpbin.org/").read() # res est de type bytes, il faut le convertir page = res.decode("utf8") import requests as rq r = rq.get("http://httpbin.org/") # r.content est de type bytes et r.text de type str # si la chaîne renvoyée était du json, on l'aurait, toute # décodée dans r.
Utiliser une base de données Sqlite # Le programme suivant crée une bdd sqlite dans le répertoire courant, met quelques données dedans et exécute deux requêtes.
import sqlite3 FILENAME = "bdd.db" def create_db(): """ Crée la bdd si elle n'existe pas et s'assure qu'il y ait au moins 3 lignes dans la table """ with sqlite3.connect(FILENAME) as conn: c= conn.cursor() c.execute("CREATE TABLE if not exists accounts(login text primary key, password text)") c.