Tips

Tips #

Afficher une courbe matplotlib servie par bottle
Afficher une courbe matplotlib servie par bottle # import matplotlib.pyplot as plt import bottle import math from io import BytesIO @bottle.route("/") def index() : x = [0.01 * _ for _ in range(614)] y = [math.sin(_) for _ in x] fig = plt.figure() ax = fig.add_subplot(111) ax.plot(x, y) imgdata = BytesIO() fig.savefig(imgdata, format='png') imgdata.seek(0) bottle.response.set_header('Content-type', 'image/png') return imgdata.read() bottle.run(bottle.app(), host='0.0.0.0', port=8080, debug= True, reloader=True)
Déplacer un objet graphique tkinter
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ée 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
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
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
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
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.
Programme minimal Flask
Programme minimal Flask # Lancer le serveur et avec un navigateur, pointer sur http://localhost:5000/info #!/bin/env python3 import flask app = flask.Flask(__name__) @app.route('/info') def info(): data = """\ <p>Bonjour visiteur,</p> <p>Pour utiliser le service, vous devez vous connecter</p> """ return data # ========================================================================================== if __name__ == '__main__': app.config['DEBUG'] = True app.run(host='0.0.0.0', port=5000)
Requêtes GET/POST en Python
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.
Récupérer une tuile Openstreetmap
Récupérer une tuile Openstreetmap # import requests headers = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0"} url = "https://tile.openstreetmap.org/5/10/19.png" r = requests.get(url, headers=headers)
Utiliser une base de données Sqlite
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.