Dessin sur interface graphique

yamawi Messages postés 14 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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
  2. yamawi Messages postés 14 Statut Membre
     
    Merci beaucoup mais je ne comprends pas où je pourrait dessiner mon dessin.
    0
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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