[PyGObject] Calculatrice PyGtk


Calculatrice PyGtk3+ est une calculatrice basique développée sous Python3 et en utilisant le module PyGObject (nommé aussi PyGI). 

Le principe de cette calculatrice est simple : 
 - L'utilisateur écrit les nombres de son équation
 - L'affichage est immédiat des nombres
 - Le point "." est remplacé lors de l'affichage par une virgule "," , mais il est utilisé comme un point lors des calculs internes de l'application
 - L'idée du calcule repose sur la fonction eval ,qui est une fonction propre à Python 3.xx, qui prend le texte affiché dans la Gtk.Entry (nommée : "entree" dans notre application) et le calcule. 
- En cas d'erreur lors de la saisie, rien ne se passe jusqu'à la correction de la syntaxe entrée.

**Fix & update** 27/10/2014 : 
  • Ajout des icônes sur les boutons : "Fermer", "Effacer tout" et "effacer le dernier chiffre"
  • Ajout des parenthèses "(" et ")"
  • Ajout du racine carré et de la méthode "calcul_racine"
  • Le bouton "=" occupe maintenant deux colonnes
**Fix ** 28/10/2014 :
  • Correction de la méthode "calcul_racine" et optimisation du code grâce à arshajii du forum stackoverflow.com
**Fix & Update** 29/10/2014  :
  • Ajout des fonctions trigonométriques
  • Optimisation du code
  • Création d'un dossier pour le logo et l'icône
**Update** 30/10/2014  :
  • Ajouter un sub-menu pour choisir le font et la taille de la Gtk.Entry

Vous pouvez télécharger le code source de Calculatrice PyGtk sur Github ou bien sur Google Drive

[Tutoriel] Oscillographe d'un mouvement harmonique

Dans ce billet on va explorer un autre exemple d'un programme crée avec Python 3 en utilisant le module "Tkinter" (nommé aussi : Tk). 
Ce billet utilisera des techniques vues dans ce billet et dans ce billet , qui nous permettront de représenter un mouvement vibratoire harmonique inspiré des cours de physique. 

Pour rappel, un mouvement vibratoire harmonique se définit comme étant la projection d ’ un
mouvement circulaire uniforme sur une droite. Les positions successives d ’ un mobile qui effectue ce type de mouvement sont traditionnellement repérées par rapport à une position
centrale : on les appelle alors des élongations. ’ équation qui décrit l’ évolution de l’ élongation
d’un tel mobile au cours du temps est toujours de la forme :
 , dans laquelle "e" représente l'élongation du mobile à tout instant t . Les constantes A, f et φ désignent respectivement l’ amplitude, la fréquence et la phase du mouvement vibratoire.
Le but du présent projet est de fournir un instrument de visualisation simple de ces différents
concepts, à savoir un système d ’ affichage automatique de graphiques élongation/temps. 
L’utilisateur pourra choisir librement les valeurs des paramètres A, f et φ, et observer les courbes qui en résultent.
Donc, en premier lieu, on créera un module nommé "oscillographe.py" qui contiendra le "Canvas" principale où les courbes seront affichées. Puis, on créera un autre fichier avec un code plus développé  nommé "main_occilo.py" qui contiendra des classes pouvant afficher et modifier à volonté les constantes A, f et φ.

Sans attarder, voilà des images animées (.gif) des deux programmes en exécution : 
 - Test du module "oscillographie.py" : 

  
- Exécution du code du fichier "main_oscillo.py" : 



Vous pouvez télécharger le code source des deux programmes via Google Drive.

[Tutoriel] : Affichage d'une série de wagons, des personnages dans les fenêtres et changer la couleur des wagons.


Dans ce billet on va explorer un autre exemple d'un programme crée avec Python en utilisant le module "Tkinter" (nommé aussi : Tk). 
Ce billet utilisera des techniques vues dans ce billet, qui nous permettra d'afficher une fenêtre contenant trois wagons et plusieurs fenêtres. L'appui sur le bouton "Train" affichera les wagons, l'appui sur le bouton "Salut" affichera des petits visages dans les fenêtres et la saisie d'une couleur en appuyant sur le bouton "Éclaire" changera la couleur du premier et du troisième wagons. 
Voilà une image "gif" qui illustre le fonctionnement de notre programme. 


À noter : Le code source en Python est fonctionnel avec "Python 3" et plus. 
Avec les versions antérieures vous rencontrez des erreurs. Et aussi, il faut respecter l'indentation lors de la saisie du code sur vos IDE préférés.

Vous pouvez télécharger le code source (Mis en format .zip)  sur Google Drive.


[Tutoriel] : Affichage des couleurs et leur noms avec Python et Tkinter


Dans ce billet on va explorer ensemble un exemple d'un programme crée avec Python en utilisant le module Tkinter (nommé aussi : Tk) qui est l'interface standard de la boite à outils Tk GUI de la langage de programmation Python .
Ce tutoriel consiste à créer un GUI permettant la saisie d'un couleur à afficher dans un rectangle. Les couleurs doivent êtres écrites comme suit : [Black, Brown, Red, Orange, Yellow, Green, Blue, Purple, Grey, White]. Le programme sera sensible aux majuscules et en cas de mauvaise saisie, un message d'erreur s'affichera et  indiquera qu'on doit appuyez sur la touche 'R' ou 'r' pour relancer la saisie.
Assez parler, voilà une présentation du programme (format .gif) et  le code documenté :



#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Auteur : Chiheb
# Licence : Free Licence

######### Affichage des couleurs + leurs noms ###########

class Application (object) :

   def __init__ (self) :
       "Constructeur de la fenêtre principale"
       # Initialisation de Tkinter()
       self.root = Tk()
       # Texte de la fenêtre principale
       self.root.title ('Affichage des couleurs')
       # Appel de la fontion dessineCadre() de la classe Application()
       self.dessineCadre()
       # Création d'un Label()
       Label(self.root,text = "Entrer le nom du couleur : ").grid(row=2,column=1,columnspan=3)
       # Création du premier boutton
       Button(self.root,text='Montrer',command = self.changeCouleur).grid(row=3,column=1)
       # Création du deuxième boutton
       Button(self.root,text='Quitter',command = self.root.quit).grid(row=3,column=3)
       # Création d'une espace de saisie de type Entry
       self.entree = Entry(self.root,width=14)
       self.entree.grid(row=3,column=2)
       # Listes des couleurs
       self.cc = ['Black','Brown','Red','Orange','Yellow','Green','Blue','Purple','Grey','White']
       # Boucle pincipale

       self.root.mainloop()

   def dessineCadre (self) :

       "Canvas avec un text box au milieu indiquant la couleur"
       # Création du Canvas de l'instance self.root avec une largeur = 250, hauteur = 100
       # et couleur de l'arière plan = ivory
       self.can = Canvas(self.root,width= 250, height = 100, bg='ivory')
       # Le Vanvas crée possède une seule ligne (row=1) et une seule colonne (column=1)
       # L'espacement de la colonne est de l'ordre de 3
       # padx = Remplissage facultatif autour d'une widget dans une cellule
       # pady = Sa valeur par défaut est 1
       self.can.grid(row=1,column=1,columnspan=3,pady=5,padx=5)
       # Création d'un rectangle
       self.can.create_rectangle(65,30,185,70,fill='light grey',width=2)  

   def changeCouleur(self) :
       "Changer la couleur du fond du rectangle"
       text_id = None
       # Utilisation de la méthode get() pour reçevoir les données par l'utilisateur
       self.ch = self.entree.get()
       # Affichage facultatif
       print("Vous avez saisie : ",self.ch)
       # Appuyer sur 'R' ou 'r' renouvelle la fenêtre de la saisie
       if self.ch.upper() =='R' :
       self.videEntree()
       if self.ch in self.cc :
       #Création du rectangle aux positions : 65,30,185,70 de l'écran
      self.can.itemconfigure(self.can.create_rectangle(65,30,185,70,fill=self.ch,width=2))   
       # Création du texte
       text_id = self.can.create_text(130,50,anchor = "center")
       # Configuration du contenu du texte
       self.can.itemconfig(text_id,text=self.ch)
       # Insertion du texte avec une police = 12
       self.can.insert(text_id,12,"")
       else :
       # Création d'un Cavnas item, un text plus précisement pour l'erreur
       # Recréation de du Vavnas en mettant la couleur par défaut = white

       self.can.itemconfigure(self.can.create_rectangle(65,30,185,70,fill='white',width=2))
       text_id = self.can.create_text(130,50,anchor = "center")
       # Message d'erreur en cas de mauvaise saisie
       self.can.itemconfig(text_id,text="  ERREUR\n(R)enouveller")
       self.can.insert(text_id,12,"")
       if self.ch.upper() =='R' :
           # Message facultatif
           print("Renouvellement de la fenêtre de la saisie")
       else :
           # Message facultatif
           print('"{}" n\'est pas inclus dans la liste des couleurs'.format(self.ch))

   def videEntree(self) :
       "Rétablir le fond blanc et enlever les caractères saisies"
       # Mettre le fond de la fenêtre de la saisie en blanc
       self.entree.configure(bg='white')
       # Vider le champs de la saisie
       self.entree.delete(0,len(self.ch))

 ################# Programme principal #################

if __name__ == '__main__' :
    from tkinter import *
    f = Application()


Vous pouvez télécharger le code source directement via : Google Drive