#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 dix heures moins vingt, les aiguilles se meuvent dans la direction du futur… ce qui correspond à la flèche du Temps dans lequel nous sommes emprisonnés. Je dis « emprisonnés » car contrairement aux trois autres dimensions spatiales où nous pouvons nous déplacer à notre guise, la funeste quatrième dimension n’est rien d’autre qu’un gigantesque couloir de la mort. Il ne vous aura pas échappé qu’il est impossible à quiconque de retourner dans le passé et par conséquent de rajeunir.

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. D’ailleurs, si quelqu’un peut m’aider à comprendre, qu’il se manifeste en me laissant un commentaire.

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).

Publié dans Informatique, Langage Python, Programmation, Tkinter | Tagué | 1 commentaire

Fortunate son (Dropkick Murphys)

Bonjour,

Voici une version plutôt musclée du célèbre opus Fortunate son, interprétée par Dropkick Murphys. Dieu tout puissant, que ce cantique déchire!

Publié dans Non classé | Laisser un commentaire

#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.

Publié dans Informatique, Langage Python, Programmation, Tkinter | Tagué | 1 commentaire

#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

Publié dans Informatique, Langage Python, Programmation, Tkinter | Tagué | Laisser un commentaire

Die Gedanken sind frei (Elles sont libres les pensées)

Aujourd’hui, j’ai envie de partager avec vous une très belle chanson en allemand dont l’auteur et le compositeur sont inconnus. Elle mériterait de devenir l’hymne européen. En tout cas, c’est un hymne à la liberté de pensée, un chant pour tous ceux qui refusent de se prosterner devant le sinistre drapeau noir de l’obscurantisme.

Cette chanson s’intitule : Die Gedanken sind frei (Elles sont libres les pensées). Je vous ai mis les paroles en allemand et en français. La photo qui illustre la musique montre Hans Scholl, Sophie Scholl et Christophe Probst, tous les trois membres du réseau de résistance allemand la Rose blanche et guillotinés par les nazis en 1943.

 

Die Gedanken sind frei

Die Gedanken sind frei, wer kann sie erraten,
sie fliegen vorbei wie nächtliche Schatten.
Kein Mensch kann sie wissen, kein Jäger erschießen
Mit Pulver und Blei : Die Gedanken sind frei!

Ich denke was ich will und was mich beglücket,
doch alles in der Still’, und wie es sich schicket.
Mein Wunsch und Begehren kann niemand verwehren,
es bleibet dabei: Die Gedanken sind frei!

Und sperrt man mich ein im finsteren Kerker,
das alles sind rein vergebliche Werke.
Denn meine Gedanken zerreißen die Schranken
und Mauern entzwei, die Gedanken sind frei!

Drum will ich auf immer den Sorgen entsagen
und will mich auch nimmer mit Grillen mehr plagen.
Man kann ja im Herzen stets lachen und scherzen
und denken dabei: Die Gedanken sind frei!

Elles sont libres les pensées

Elles sont libres, les pensées
Personne ne peut les arrêter
Car elles peuvent s’envoler
Comme une ombre dans l’obscurité
Personne ne peut les deviner
Personne ne peut les traquer
Rien ne peut les tuer :

Elles sont libres, les pensées

Je pense ce que je veux
Et ce qui me rend heureux
Mais tout ça en silence
A ma convenance.
Mon désir, ma volonté
Personne ne peut les réfuter
C’est ma réalité :

Elles sont libres, les pensées

Et si l’on me jetait
Dans un cachot profond,
Aucun mur épais
Ne sera jamais mon horizon.
Car toutes mes pensées
Abattent les murs, elles sont les clés
De ma réalité :

Elles sont libres, les pensées.

Publié dans Musique | Tagué | Laisser un commentaire

#Python : programmer un calendrier-agenda (suite)

Bonjour à tous,

Je viens tout juste de terminer de coder le module agenda et je suis relativement satisfait du résultat (même si c’est un peu bancal par moments) . Comme je l’ai déjà expliqué dans mon article précédent, chaque jour du mois est un bouton qui, lorsqu’il est pressé, ouvre une page d’agenda.

Ensuite, il est possible de feuilleter l’agenda, c’est-à-dire de passer d’une page à l’autre. Voici donc mon agendrier personnel avec le code de l’agenda. Le code du calendrier est dans l’article précédent.

//pastebin.com/embed_iframe/C0eZJk5u

agendrier

Publié dans Informatique, Programmation | Tagué | 3 commentaires

#Python : Programmer un calendrier-agenda

Bonjour,

Je suis en vacances depuis déjà deux bonnes semaines et je viens de réaliser que j’ai passé une bonne partie de mon temps libre à coder! Parfois, je me demande si ça ne tourne pas à l’obsession…

Bref, après le jeu du pendu, je me suis mis en tête de programmer un agendrier, c’est-à-dire un agenda-calendrier. J’ai terminé la première partie, à savoir le calendrier. Le résultat me comble de joie. Pourtant, au départ c’était loin d’être gagner.

agendrier

Le plus difficile a été d’instancier les numéros de semaine. Quelle galère! A ma grande surprise, j’ai découvert que certaines années comptaient 53 semaines, que la semaine 1 pouvait débuter en Décembre de l’année précédente et que la semaine 52 pouvait se terminer en Janvier de l’année suivante…. Tout en tenant compte des années bissextiles tous les quatre ans si l’année est divisible par 4 et non divisible par 100… Ou bien si l’année est divisible par 400!

Comme d’habitude, je me suis lancé dans l’érection d’une véritable usine à gaz jusqu’à ce que je découvre qu’il existait déjà des modules susceptibles de me faciliter la tâche. Merci donc aux modules monthcalendar et localtime. Je n’oublie pas non plus le module datetime et sa méthode isocalendar() laquelle fut d’un grand secours.

Il s’agit donc d’un calendrier dont chaque jour du mois est composé d’un bouton sur lequel on peut cliquer. A terme, ce clic est censé ouvrir la page d’agenda corrélative. Je dis « A terme » car je n’ai pas encore commencé à coder l’agenda. Ce sera la prochaine étape et pour ce faire, je souhaite exploiter toutes les possibilités offertes par le widget Text et ses méthodes. Du reste, ce sera l’objet d’un prochain article.

En attendant, voici le code du calendrier que vous pouvez utiliser et modifier comme bon vous semble.

//pastebin.com/embed_iframe/eXtcFgUN

Publié dans Informatique, Langage Python, Programmation, Tkinter | Laisser un commentaire