[PYTHON] J'ai essayé de jouer avec la calculatrice avec tkinter

Tout d'abord

Après avoir appris la programmation avec python, mon préféré était le ** traitement des boutons avec tkinter **. Quand je me demandais ce qui pouvait faire une grande partie de ce traitement des boutons, la calculatrice est sortie en premier.


procédure

Étalage

final_python.py


from tkinter import *

#Création de fenêtre
root = Tk()
#Spécification de la taille de la fenêtre
root.geometry("500x500")
#Création de titre de fenêtre
root.title("Machine arithmétique à quatre règles")
#Cliché
root.mainloop()

Fonctionnalités C et AC

final_python.py


#Fonction C
def clear():
    textVal = expression.get()
    
    if len(textVal) > 1:
        expression.set(textVal[:-1])
    
    else:
        expression.set("")

#Fonction AC
def all_clear():
    expression.set("")

--Rôle de C et AC

C Effacer caractère par caractère
AC Effacer tous les caractères

Disposition des boutons

final_python.py



buttons = (
    (("C", clear   ), ("AC", all_clear), ("%", op("%") ), ("+", op("+"))),
    (("7", digit(7)), ("8",  digit(8) ), ("9", digit(9)), ("/", op("/"))),
    (("4", digit(4)), ("5",  digit(5) ), ("6", digit(6)), ("*", op("*"))),
    (("1", digit(1)), ("2",  digit(2) ), ("3", digit(3)), ("-", op("-"))),
    (("0", digit(1)), (None, None     ), ('.', op('.') ), ("=", calculate)),
)

Formulaire rempli

ezgif.com-video-to-gif.gif


excuses

Puisque j'annonçais la tâche finale cette fois, je voulais expliquer toutes les fonctions, mais comme chaque personne a un temps limité de 2 minutes, j'ai réduit les points afin qu'il puisse être conservé dans les 2 minutes. Le code source est collé à la fin, alors jetez-y un œil ...

Code source

final_python.py


# coding:utf-8
from tkinter import *

#Étalage
root = Tk()
#Spécification de la taille de la fenêtre
root.geometry("500x500")
#Création de titre de fenêtre
root.title("Machine arithmétique à quatre règles")

expression = StringVar()

#Fonction C
def clear():
    textVal = expression.get()
    
    if len(textVal) > 1:
        expression.set(textVal[:-1])
    
    else:
        expression.set("")

#Fonction AC
def all_clear():
    expression.set("")

#Bouton numérique
def digit(number):
    def func():
        expression.set(expression.get() + str(number))
    return func

#Bouton Calculer
def op(label):
    def func():
        expression.set(expression.get() + label)
    return func

#=Fonction de
def calculate():
    try:
        expression.set(eval(expression.get()))
    except SyntaxError:
        expression.set("SyntaxError")
    except ZeroDivisionError:
        expression.set("ZeroDivisionError")
    except NameError:
        expression.set("NameError")

buttons = (
    (("C", clear   ), ("AC", all_clear), ("%", op("%") ), ("+", op("+"))),
    (("7", digit(7)), ("8",  digit(8) ), ("9", digit(9)), ("/", op("/"))),
    (("4", digit(4)), ("5",  digit(5) ), ("6", digit(6)), ("*", op("*"))),
    (("1", digit(1)), ("2",  digit(2) ), ("3", digit(3)), ("-", op("-"))),
    (("0", digit(1)), (None, None     ), ('.', op('.') ), ("=", calculate)),
)

#Écran d'affichage
e = Label(root, textvariable=expression, fg="#ffffff", bg="#000000", anchor=E, height=2)
e.grid(row=0, column=0, columnspan=4, sticky="EW")

for row, btns in enumerate(buttons, 1):
    for col, (label, func) in enumerate(btns):
        if label:
            b = Button(root, text=label, command=func, width=10, height=5)
            b.grid(row=row, column=col)

#Cliché
root.mainloop()

Impressions

Presque presque le code source était basé sur Calculatrice faite avec Tkinter, mais la largeur de la fenêtre, la taille de la calculatrice elle-même et la fonction de C Certaines parties devaient être améliorées, donc je suis content d'avoir pu le faire moi-même. C'était aussi bien de pouvoir comprendre la signification de chaque commande. Je veux me concentrer sur la programmation pendant les vacances d'été.

Les références

Recommended Posts

J'ai essayé de jouer avec la calculatrice avec tkinter
J'ai essayé la validation croisée basée sur le résultat de la recherche de grille avec scikit-learn
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé de jouer en connectant PartiQL et MongoDB
J'ai essayé de "binariser" l'image avec Python + OpenCV
J'ai essayé avec les 100 meilleurs packages PyPI> J'ai essayé de représenter graphiquement les packages installés sur Python
[Introduction à AWS] J'ai essayé de porter une application de conversation et de jouer avec text2speech @ AWS ♪
J'ai essayé Python sur Mac pour la première fois.
J'ai essayé d'exécuter l'application sur la plateforme IoT "Rimotte"
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé python pour la première fois avec heroku
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé d'installer le noyau Linux sur virtualbox + vagrant
[Introduction à AWS] J'ai essayé de jouer avec la conversion voix-texte ♪
J'ai essayé de frapper l'API avec le client python d'echonest
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé Learning-to-Rank avec Elasticsearch!
J'ai essayé le clustering avec PyCaret
J'ai essayé la bibliothèque changefinder!
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai essayé MLflow sur Databricks
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé de simuler la propagation de l'infection avec Python
J'ai essayé d'analyser les émotions de tout le roman "Weather Child" ☔️
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
J'ai essayé de notifier les informations de retard de train avec LINE Notify
J'ai essayé d'exécuter PIFuHD sur Windows pour le moment
J'ai essayé de remplacer le disque dur Windows 10 par un SSD plus petit
J'ai essayé de sauvegarder l'historique des demandes d'API DRF avec django-request
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
J'ai essayé de lancer le cluster ipython au minimum sur AWS
J'ai affiché le chat de YouTube Live et essayé de jouer
[Démarrage du shell] J'ai essayé d'afficher le shell sur le téléviseur avec un G-cluster à carte Linux bon marché
J'ai essayé AdaNet pour les données de table
J'ai essayé le tutoriel TensorFlow 1er
J'ai essayé le roman Naro API 2
J'ai essayé de résumer des phrases avec summpy
J'ai essayé l'apprentissage automatique avec liblinear
J'ai essayé webScraping avec python.
J'ai essayé de déplacer de la nourriture avec SinGAN
J'ai essayé le tutoriel TensorFlow 2ème
J'ai essayé d'implémenter DeepPose avec PyTorch
J'ai essayé Cython sur Ubuntu sur VirtualBox
J'ai aimé le tweet avec python. ..
J'ai essayé la détection de visage avec MTCNN
J'ai essayé l'API du roman Naruro
J'ai essayé d'exécuter prolog avec python 3.8.2.