Dessin sur interface graphique

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

  1. Modérateur
    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
    1. Merci beaucoup mais je ne comprends pas où je pourrait dessiner mon dessin.
      1. Modérateur
        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