Dessin sur interface graphique

Fermé
yamawi Messages postés 13 Date d'inscription lundi 28 février 2022 Statut Membre Dernière intervention 8 février 2024 - Modifié le 28 févr. 2022 à 18:47
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 - 1 mars 2022 à 15:24
Bonjour,

J'aimerais faire un programme python qui affiche un dessin dans une matrice de 5x5 LEDs.

Pour cela, j'aimerais que le programme ouvre une interface graphique dans laquelle je dessine ce que je veux. Puis le dessin sera pixelisé de façon à que j'ai une grille de 5x5 pixels. Ainsi chaque pixel équivaut à une LED. Et pour finir que les LED reproduise le dessin.

Mon problème est que je ne sais pas comment faire une interface graphique de dessin.
Si vous savez comment on le fait pouvez-vous m'aider s'il vous plait ?

PS: pour la pixellisation je compte utiliser la bibliothèque PIL.

3 réponses

mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
Modifié le 28 févr. 2022 à 19:05
Bonjour,

Si tu utilises un client python graphique genre
jupyter notebook
ou
jupyter lab
, inutile de t'embêter à faire une interface graphique, tu peux directement afficher ta matrice de pixel dans le notebook. C'est à mon avis le plus simple.

Tu peux dans ce cas directement utiliser
matplotlib
(voir cette discussion).

Ci-dessous on dessine une matrice de 2 lignes et 3 colonnes :

from matplotlib import pyplot as plt
import numpy as np

pixels = [
    [[255, 0, 0], [0, 255, 0], [255, 255, 0]],  # red, green, yellow
    [[0, 0, 255], [0, 0, 0],   [255, 255, 255]] # blue, black, white
]
image = np.array(pixels, dtype=np.uint8)
plt.imshow(image, interpolation='none')
plt.axis('off')
plt.show()


Quelques explications :
  • On utilise
    numpy
    pour avoir un tableau de taille M x N x 3 (M lignes de pixels, N colonnes de pixels, 3 canaux pour les couleurs, dans l'ordre RGB (red, green, blue)). Les entiers contenus dans ce tableaux sont des uint8 (entiers non signés sur 8 bits) ce qui signifie que les valeurs valides sont entre 0 et 255.
  • On efface les axes car ils ne servent à rien, puis on affiche le graphe.


Bonne chance
0
yamawi Messages postés 13 Date d'inscription lundi 28 février 2022 Statut Membre Dernière intervention 8 février 2024
28 févr. 2022 à 19:38
Merci beaucoup mais je ne comprends pas où je pourrait dessiner mon dessin.
0
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
Modifié le 1 mars 2022 à 15:28
Comme je le disais plus haut, si tu utilises jupyter lab ou jupyter notebook (qui s'ouvrent dans ton navigateur), tu écris ton code python dans un notebook. Un notebook c'est un peu comme un interpréteur python classique, sauf que comme il est dans le navigateur, tu peux afficher des dessins.

Voilà à quoi ça ressemble :



Bonne chance
0