Calculatrice simpliciste sous tkinter

Soyez le premier à donner votre avis sur cette source.

Vue 19 611 fois - Téléchargée 1 501 fois

Description

Simple calculatrice permettant, addition,soustraction,multiplication et division de plusieurs nombre avec ou sans virgule

Source / Exemple :


# -*- coding: cp1252 -*- 

from Tkinter import*
import Tkinter as Tk
from math import *

t,y,p,n=0,0,0,1

def nombre(x):
        global t,p,n
        if p==0:
                t=t*10+x
        else:
                t=t+x/(10**(n))
                n=n+1
        z.set(str(t))
        
def x0():
        nombre(0.)

def x1():
        nombre(1.)
        
def x2():
        nombre(2.)

                
def x3():
        nombre(3.)

def x4():
        nombre(4.)
        
def x5():
        nombre(5.)
        
def x6():
        nombre(6.)

def x7():
        nombre(7.)
        
def x8():
        nombre(8.)
        
def x9():
        nombre(9.)

def point():
        global p
        p = '.'

def aplus():
        global y,t1,t,p,n
        y,t1,p,n = '+',t,0,1
        t=0
                
def amoins():
        global y,t1,t,p,n
        y,t1,p,n = '-',t,0,1
        t=0
                        
def afois():
        global y,t1,t,p,n
        y ,t1,p,n= '*',t,0,1
        t=0

def adiv():
        global y,t1,t,p,n
        y,p,t1,n='/',0,t,1
        t=0
                        
def aegal():
        global t,t1,n,p
        v ,p= '=',0
        if y == '+':
                z.set(str((t1+t)))
                t=t1+t
        elif y== '-':
                z.set(str((t1-t)))
                t=t1-t
        elif y== '*':
                z.set(str((t1*t)))
                t=t1*t
        elif y=='/':
                if t==0:
                        z.set(str("Erreur, impossible"))
                else:
                        z.set(str((t1/t)))
                        t=t1/t
        t1,n=0,1

def clear():
        global t,t1,n,p,z,y
        t,t1,n=0,0,0
        p,y=0,0
        z.set(str('0'))
        

#-----Prog Principal-----#

fen = Tk.Tk()
fen.title('Calculatrice')

fra1 = Frame(fen)
fra1.grid(row=1,column=0)
Button(fra1, text = '9', command= x9).grid(row=2, column = 2, padx = 3, pady = 3)
Button(fra1, text = '8', command= x8).grid(row=2, column = 1, padx = 3, pady = 3)
Button(fra1, text = '7', command= x7).grid(row=2, column = 0, padx = 3, pady = 3)
Button(fra1, text = '6', command= x6).grid(row=3, column = 2, padx = 3, pady = 3)
Button(fra1, text = '5', command= x5).grid(row=3, column = 1, padx = 3, pady = 3)
Button(fra1, text = '4', command= x4).grid(row=3, column = 0, padx = 3, pady = 3)
Button(fra1, text = '3', command= x3).grid(row=4, column = 2, padx = 3, pady = 3)
Button(fra1, text = '2', command= x2).grid(row=4, column = 1, padx = 3, pady = 3)
Button(fra1, text = '1', command= x1).grid(row=4, column = 0, padx = 3, pady = 3)
Button(fra1, text = '0', command= x0).grid(row=5, column = 2, padx = 3, pady = 3)

z = StringVar()
entree=Entry(fen,textvariable=z)
entree.grid(row=0,column=0)
z.set("0.")

Button(fra1, text= '+', command = aplus).grid(row=2,column=5, padx = 3, pady = 3)
Button(fra1, text= '-', command = amoins).grid(row=3,column=5, padx = 3, pady = 3)
Button(fra1, text= '*', command = afois).grid(row=2,column=6, padx = 3, pady = 3)
Button(fra1, text= '/', command = adiv).grid(row=3,column=6, padx = 3, pady = 3)
Button(fra1, text= '.', command = point).grid(row=4,column=5, padx = 3, pady = 3)
Button(fra1, text= '=', command = aegal).grid(row=4,column=6, padx = 3, pady = 3)
Button(fra1, text= 'C', command = clear).grid(row=5, column=6, padx = 3, pady = 3)

Button(fen,text='Quitter',command = fen.destroy).grid(row=6,column=7)
fen.mainloop

Conclusion :


Code simple même si un peu trop lourd à mon goût, je pense que je l'allègerais et l'améliorerais quand j'aurais compris et appris l'utilité des classes.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
28
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
2 mai 2016

Oué, j'susi désolé pour le flood , je sais même pas pourquoi il est arrivé la, j'ai écrit ce message en étant claqué, j'ai cliqué plusieurs fois avant de me rappeler que y'avait la charte. Comme je savais pas comment faire pour supprimer bah la j'ai signaler à un admin..

Sinon, bah ce que je voulais laisser sous-entendre avec l'évolution , c'est que pour moi, il vaut mieux que je prenne mon temps pour tout bien apprendre.

Et pour le forum, comme je ne suis qu'un débutant en python, pour moi si le programme marche c'est déjà bien ;) . A un moment j'allais posté sur le forum pour demander de l'aide, et puis entre temps une idée m'est apparue et hop après j'avais un programme opérationnel donc voila
Messages postés
336
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
8 novembre 2011
1
Qui ? moi Anti-bill? noon.. J'en voudrait jamais à une personne qui vend des portes... (double blague ! backdoor+Gates)

Comme le dit très bien Robert A. Hayden :

Windows has set back the computing industry by at least 10 years. Bill Gates should be drawn, quartered, hung, shot, poisoned, disembowelled, and then REALLY hurt.

ça vient du cœur. Mais bon, j'adore le film Kill Bill (gate).

en tout cas je doit dire que le nouveau microsoft sans Mr Gate, arrive à tenir la position de "détestable" au lieu du classique "je doit poser un bombe dans les locaux de microsoft pour le bien de l'humanitée"

Bon j'arrête de parler de lui et je vais parler, hum, ha oui du code source :

"""L'évolution c'est bien mais ça prend tout son temps, l'être humain à pris plusieurs millions d'années pour évoluer et continuera encore à évoluer. Si l'on veut que l'évolution se passe plus vite le résultat sera baclé et donc très probablement raté."""
Xeolin tue Elnabo (et Bill Gates par la même occasion)

ha ok... bon... Ding, arrête de balancer des idées comme ca c'est ridicule c'est un non sens absolut ! l'évolution humaine n'a rien à voir de celui de l'individuel. Sache que tout les ans ont évolue (point de vue technologique) que depuis le début de l'humanité à 1900. On es en phase d'évolution exponentielle.

"J'avoue, mea culpa , que j'ai pas spécialement était poli :'( , mais faut pas m'en vouloir
quand on apprend que ce qui nous à pris plusieurs heures de réfléxions peut en fait être fait en 10mn on est pas spécialement content"

Ton problème c'est que tes plusieurs heures de réflexion tu aurait pus les résumés à 30minutes+5 questions sur le forum.

Regarde ma source sur le RSA, comme toi je suis partit à 0. et au fur et à mesure j'ai demandé de l'aide et la mon code est bon, il tient la route (juste quelque petits détails à régler). Tu es sur un site d'entraide, ca nous dérangera de t'aider, car a ton tour tu pouras faire de même avec des plus débutants.

Finalement tu as (surement) apprit une leçon importante et rapidement : "quand faut-il demander de l'aide". Et ça quelque heures ca vaut rien face à une telle leçon.

Nate
Messages postés
382
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
8 novembre 2010
11
Ah encore un anti Bill :p Le pauvre il le mérite pas(bon ok un peu mais ...)
Je te dirais tous ca demain bien que je préfère la nuit au jour, je suis obligé de me lever tôt ... et donc de ne pas vivre la nuit (maudite fatigue ...). Mais bon revenons un peu au sujet du site et plus principalement à Elnabo (Ara anti flood : ON)

L'apprentissage de Lambda ne se fait pas dans le tuto de G.S. qui est loin d'être complet ... Il faut se documenté ailleurs et toute les occasions sont bonne, Xeolin viens de t'en donner une.
Lambda ou Try/Except sont des éléments de base de Python qu'il faut savoir maitrisé tôt à mon avis pour ne pas prendre de mauvaises habitudes ... Passe plus de temps sur un programme complet que sur un programme certes rapide sans âme ...

PS : Je comprends ton énervement légitime,ta réaction est mesuré et tempéré ...
Messages postés
336
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
8 novembre 2011
1
... enleve le flood wtf
Messages postés
336
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
8 novembre 2011
1
et oui je suis né un trois juillet :p
tu as pas une adresse skype ou un irc ? (je boycott les produit de microsoft mais si c'est pour toi, je songerais à utiliser pidgin pour me connecter sur msn..)

Sinon oui tu es rapide et ca en viens du flood de notre part :(

nate.
Afficher les 19 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.