#Python : programmer une photothèque

Bonjour à tous,

Aujourd’hui, je vous propose une courte vidéo Youtube qui me permet de vous montrer à quoi ressemble mon programme Ma photothèque écrit en langage Python (Ai-je besoin de le préciser…).

Il permet de créer des albums photos. Voici le code :

//pastebin.com/embed_iframe/cJiyHY80

#Python : Créer une photothèque

Edit du 7 Novembre 2016

Voici le code du programme :

//pastebin.com/embed_iframe/cJiyHY80

Bonsoir,

Aujourd’hui, scoop! Il faisait un temps gris et pluvieux dans le Nord de l’Allemagne. Alors, plutôt que de m’adonner à une activité extérieure, je me suis courageusement replié sur mon siège de bureau. Et pour me changer les idées, je me suis dit:

Continuer à lire … « #Python : Créer une photothèque »

#Python : Ordinotes, mon logiciel « post-it »

Dans la logithèque, la bibliothèque de logiciels proposée par Ubuntu, les mini-programmes pour enregistrer de simples notes sont légion. Entre Xpad, Knotes, GNote et compagnie, j’aurais du trouver mon bonheur mais ce n’est pas le cas. Aucun ne répond à mes exigences qui ne sont pourtant pas très élevées.  Compte tenu du fait qu’on ne se lance pas dans la rédaction d’un  roman sur des post-its de 60 millimètres par 60, il me semble évident que ce type de logiciel doit être simple, rapide et doté de fonctionnalités minimales. Un post-it, ça sert à écrire des notes « à la volée ».

Je me suis efforcé de respecter ce cahier des charges et c’est ainsi qu’est né Ordinotes, mon logiciel « post-it » personnel.

Code : //pastebin.com/embed_iframe/9mE0uS6J

ordinotes

Première chose, il n’est pas carré mais rectangulaire, ce qui permet de rédiger de vraies phrases sans être obligé de faire un retour chariot après trois mots. L’en-tête se résume à un bouton Menu (☰), à la date (automatiquement mise à jour grâce à l’importation du module localtime) et à un champ d’entrée pour renseigner l’objet. Aussi longtemps que celui-ci est vide, il n’est pas possible de rédiger la note car l’éditeur de texte est verrouillé. J’utilise pour ce faire la méthode isspace(). Dès que l’objet est renseigné, l’éditeur obtient le focus. Il est possible de modifier la date car il s’agit non pas d’un widget Label mais d’un champ d’entrée.

Cliquons sur l’icône menu (☰) et découvrons ensemble ses fonctionnalités. Pour votre gouverne, sachez que ce genre d’icône s’appelle une icône hamburger.

ordinotes_2

Le menu est noir car je trouve tout simplement que le noir et le jaune sont deux couleurs qui se marient bien ensemble. Il est tout à fait possible de modifier le programme pour les remplacer par d’autres couleurs. Il est même possible de le proposer directement à l’utilisateur grâce au sous-module colorchooser. Ce n’est pas bien compliqué.

Cliquons sur « Ouvrir ». L’on voit clairement que j’ai déjà rédigé quatre notes. Il n’est donc pas étonnant de voir apparaître quatre boutons. Il vous suffit de cliquer sur le bouton de votre choix pour que la note se matérialise :

ordinotes_3

Vous pouvez bien évidemment ouvrir toutes les notes et visualiser ainsi toutes les tâches qu’il vous reste à accomplir. C’est un peu le principe des post-it. J’ai défini une variable de classe qui fait apparaître les notes en cascade, avec un décalage de 100 pixels en hauteur et en largeur.

Le code est ici :

//pastebin.com/embed_iframe/9mE0uS6J

Il me reste encore quelques fenêtres d’avertissement à rajouter, notamment lorsque l’utilisateur décide de supprimer tout ou partie de ses notes. C’est l’affaire d’un petit quart d’heure.

Ai-je besoin de préciser que vous êtes libres de recopier ce code, de l’utiliser et de le modifier comme bon vous semble?

#Python : rajouter un champ de recherche dans mon agenda-calendrier

Bonjour à tous,

Aujourd’hui, dans mon agenda-calendrier qui me comble de joie, j’ai instancié un champ de recherche couplé à un bouton représentant une loupe. Il m’a fallu plusieurs jours pour arriver à mes fins mais je dois reconnaître que je suis bien content car il s’agit d’une fonction fort utile au demeurant. Le code est ici:

//pastebin.com/embed_iframe/C0eZJk5u

Comme vous pouvez le voir dans le diaporama ci-dessous, j’ai entré le mot « Espéranto » dans le champ de recherche. Vous pouvez mettre des majuscules ou des minuscules si cela vous chante… Peu importe puisque de toute manière, grâce à la méthode lower() que j’utilise dans mon code, toutes les lettres sont transformées en minuscules.

Lorsque je lance la recherche, la fonction (ou plutôt la méthode) ouvre une fenêtre Toplevel et me retourne toutes les dates où apparaît l’occurrence recherchée. Elle me les retourne sous forme de boutons, c’est-à dire que si vous cliquez sur le bouton 17/09/2016 par exemple, cela provoque l’ouverture de la page correspondante. Regardez comme c’est beau :

Ce diaporama nécessite JavaScript.

Oui, mais keskispasse si par hasard l’occurrence n’est présente dans aucune des pages de l’agenda? Eh bien là encore, pas de panique! La méthode vous prévient en ouvrant une fenêtre Toplevel contenant un message idoine… Le fond est rouge pour bien vous faire comprendre que votre recherche n’a rien donné :

recherche4

#Python : créer une horloge à aiguilles (suite et fin)

Bonjour,

Il y a quelques jours, je vous avais dit que je m’étais lancé dans la programmation d’une horloge et que j’éprouvais des difficultés à amorcer son mécanisme.

Eh bien aujourd’hui, je suis heureux de vous annoncer que j’ai réussi à surmonter cet obstacle. Désormais, comme vous pouvez le constater dans la vidéo ci-dessous prise vers onze heures moins dix, les aiguilles se meuvent dans la direction du futur.

Voici le code:

//pastebin.com/embed_iframe/7ad91Vg8

Il me faudra encore un peu de temps pour expliquer en détails comment fonctionne la méthode move, notamment l’utilité des fonctions cosinus et sinus. Je me suis inspiré d’un bout de code que j’ai trouvé sur internet. En clair, j’ai pompé en partie les lignes 62 à 64 et depuis quelques jours, je me suis plongé dans un cours de trigonométrie. Je manipule les sinus, les cosinus, les hypoténuses etc… dans l’espoir de pouvoir vous fournir une explication détaillée de ces trois lignes obscures.

Pour ce qui est du déplacement proprement dit, j’utilise la récursivité (ligne 65) : La méthode move s’appelle elle-même toutes les mille millièmes de seconde, c’est-à-dire toutes les secondes (ligne 66).

#Python : créer une horloge à aiguilles

Bonjour,

Je me suis lançé dans un nouveau projet que je croyais tout à fait abordable mais qui s’avère être beaucoup plus difficile que prévu. Je voulais programmer une horloge. La dessiner a été un jeu d’enfant. Le problème, c’est de la faire fonctionner. Il faut bien que les aiguilles tournent! Et pour les faire tourner, il faut manipuler des outils trigonométriques tels que le sinus et le cosinus, deux olibrius dont j’ai gardé un très vague souvenir de mes années lycée.

Donc, tout ça pour vous dire que mon horloge, elle est très bien… sauf qu’elle marche pas! Il va falloir que je me plonge dans un cours de trigonométrie pour les brêles avant d’espérer voir les aiguilles se mouvoir. C’est pas gagné.

Pour ce qui est de dessiner l’horloge, voici comment j’ai procédé. J’ai d’abord dessiner un cercle avec la méthode Canvas.create_oval:

horloge

Ensuite, j’ai dessiné quatre cercles rouges de même rayon que le cercle vert et dont le centre correspond à la jonction entre le périmètre du cercle vert et les deux lignes perpendiculaire et parallèle. Puis, j’ai tiré des lignes bleues partant du centre du cercle vert jusqu’aux jonctions entre le cercle vert et les cercles rouges. Pour cela, j’utilise la méthode Canvas.create_line:

horloge2

Par ce procédé, j’obtiens l’emplacement exact des chiffres de l’horloge que je m’empresse de dessiner grâce à la méthode Canvas.create_text:

horloge3

Je dessine les aiguilles puis j’efface les lignes bleues et les cercles rouges. Mon horloge se matérialise dans toute sa beauté minimale. Il ne me reste plus qu’à trouver le moyen de la faire fonctionner.

La suite est ici… Désormais, l’horloge fonctionne.

#Python : rajouter une fenêtre surgissante de rappel dans mon agenda-calendrier

Bonjour à tous,

Il y a deux jours, j’ai doté mon agenda-calendrier d’une fonctionnalité hyper pratique pour celles et ceux qui, comme moi, ont la fâcheuse habitude de remettre au lendemain ce qui peut être réglé le jour même… A savoir, une fenêtre pop-up qui me rappelle que je n’ai pas validé un événement passé depuis au moins deux jours.

Un exemple valant mieux qu’un long discours, j’ai créé un événement « Rendez-vous chez le dermatologue » le  1er septembre 2016. Je n’ai pas de problèmes de peau! C’est juste pour vous expliquer le principe.

Le 3 Septembre, n’ayant toujours pas validé l’événement, une fenêtre surgissante apparait lorsqu’on j’ouvre mon application. Elle apparaitra tant que je n’aurai pas validé, effacé ou déplacé l’événement dans le futur. C’est simple mais bougrement efficace!

popuprappel

Dès que l’événement a été validé (c’est-à dire en vert comme dans la capture d’écran ci-dessous), la fenêtre surgissante cesse d’apparaitre.

popup_valide