Essayez d'utiliser Tkinter de Python

J'utilise de plus en plus Tkinter de Python, mais je n'avais pas beaucoup de sites contenant les informations que je voulais (ma préférée), je vais donc le résumer.

De plus, lorsque j'ai eu une session d'étude sur Tkinter, des matériaux fabriqués avec le système Python 3 sont sortis, donc Si vous êtes intéressé, s'il vous plaît. https://nnahito.gitbooks.io/tkinter/content/

* Introduction

Je suis une personne procédurale. Je n'utilise pas du tout l'orientation objet. Mes langues préférées sont BASIC et perl, qui sont des espèces menacées. Donc, orienté objet est le meilleurMVC Génial! !! Veuillez noter que je pense que le style d'écriture est inconnu ou inconnu de ceux qui sont censés l'être.

* Qu'est-ce que Tkinter en premier lieu?

C'est un ** toolkit qui vous permet de construire ** GUI en Python. Cela vous permet d'exécuter des scripts Python au format GUI.

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter

root = Tkinter.Tk()
root.mainloop()

スクリーンショット 2015-02-21 15.35.22.png

* Basique

Il existe des tonnes de grammaires de base pour Python, alors veuillez trouver votre site de commentaires préféré. Ici, je vais reprendre la partie sur laquelle je suis tombé par hasard dans Tkinter.

Tout d'abord, le format de base est le suivant.

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

root.mainloop()

Faire cela ouvrira une fenêtre de 400px * 300px.

root.title (u" nom de la fenêtre ") Ceci détermine la notation de la barre de titre de la fenêtre

root.geometry (" horizontal x vertical ") Cela détermine la taille de la fenêtre. Écrivez la valeur numérique en X (x) inférieur, comme la longueur horizontale x la longueur verticale.

Notez que le traitement du contenu de l'exécution du logiciel est root = Tkinter.Tk() Quand root.mainloop() Il est décrit entre les deux.

Que peut-on exprimer par Tkinter

Les détails sont sur cette page, mais il est résumé en détail.

スクリーンショット 2015-02-21 5.19.11.png

Tout ce dont j'avais besoin était

Étiquette

Utilisez les étiquettes suivantes. Label (text = u'label name ') Si vous modifiez la partie "nom de l'étiquette", le contenu de l'étiquette changera.

Voici un exemple.

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#étiquette
Static1 = Tkinter.Label(text=u'test')
Static1.pack()

root.mainloop()

スクリーンショット 2015-02-21 5.28.25.png

Static1 = Tkinter.Label(text=u'test') Static1 of est le handle de l'étiquette. (Autrement dit, je mets une poignée dans la variable) De plus, utilisez Static1.pack () pour stocker le handle dans le widget de la fenêtre. Si vous le décomposez, il s'alignera automatiquement et le placera sur la fenêtre.

Si vous voulez le placer n'importe où, Static1.place (coordonnées x = x, coordonnées y = y) Utilisez place (coordonnée x = x, coordonnée y = y) comme dans.

En outre, pour les widgets tels que les étiquettes, il existe des options courantes. Il est résumé sous forme de tableau en haut de la page précédente (Easy Python / Tkinter). Par exemple, il est possible de changer la couleur d'arrière-plan et la couleur du texte de l'étiquette.

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#étiquette
Static1 = Tkinter.Label(text=u'test', foreground='#ff0000', background='#ffaacc')
Static1.pack()

root.mainloop()

Les options sont Static1 = Tkinter.Label(text=u'test', foreground='#ff0000', background='#ffaacc') Il est possible d'ajouter comme suit.

スクリーンショット 2015-02-21 5.36.59.png

De plus, par exemple, si vous utilisez place, cela ressemblera à ceci.

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#étiquette
Static1 = Tkinter.Label(text=u'test', foreground='#ff0000', background='#ffaacc')
Static1.place(x=150, y=228)

root.mainloop()

スクリーンショット 2015-02-21 5.40.42.png

Vous pouvez voir que l'étiquette s'est déplacée vers n'importe quelle position. Je vais l'utiliser comme ça.

* Entrée (boîte de saisie 1 ligne)

Créez une zone de saisie sur une ligne "Entrée" qui n'autorise pas les sauts de ligne. Écrivez le code comme ʻEditBox = Tkinter.Entry () `.

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#entrée
EditBox = Tkinter.Entry()
EditBox.pack()

root.mainloop()

Comment saisir des caractères depuis le début

Pour saisir des caractères depuis le début avec Entrée Utilisez ʻinsert (Tkinter.END, "string to add") `. Cela insérera une "chaîne supplémentaire" sur la dernière ligne. Vous pouvez insérer une chaîne de caractères n'importe où, mais j'omettrai l'explication ici. Pour plus de détails, veuillez consulter ce site

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#entrée
EditBox = Tkinter.Entry()
EditBox.insert(Tkinter.END,"Chaîne de caractères à insérer")
EditBox.pack()

root.mainloop()

スクリーンショット 2015-02-21 15.09.16.png

Taille de l'entrée

Vous pouvez également spécifier la taille de l'entrée. Il peut être déterminé par Tkinter.Entry (width = size).

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#entrée
EditBox = Tkinter.Entry(width=50)
EditBox.insert(Tkinter.END,"Chaîne de caractères à insérer")
EditBox.pack()

root.mainloop()

スクリーンショット 2015-02-21 15.11.35.png J'ai essayé de l'agrandir.

Obtenez le contenu de l'entrée

Utilisez .get () pour obtenir le contenu de l'entrée.

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#entrée
EditBox = Tkinter.Entry(width=50)
EditBox.insert(Tkinter.END,"Chaîne de caractères à insérer")
EditBox.pack()

#Ici, le contenu de Entry est saisi en valeur
value = EditBox.get()

root.mainloop()

Supprimer le contenu de l'entrée

Il peut être spécifié comme ʻEditBox.delete (0, Tkinter.END) . (.delete(0, Tkinter.END)`) Vous pouvez le supprimer de n'importe quel endroit, mais je vais l'omettre ici. Pour plus de détails, veuillez consulter ce site

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#entrée
EditBox = Tkinter.Entry(width=50)
EditBox.insert(Tkinter.END,"Chaîne de caractères à insérer")
EditBox.pack()

#Supprimer le contenu de l'entrée
EditBox.delete(0, Tkinter.END)

root.mainloop()

スクリーンショット 2015-02-21 15.15.02.png

Depuis que j'ai ajouté un caractère à l'entrée et que je l'ai effacé tel quel, cela signifie que rien n'a été écrit en premier lieu. Je vais donner un exemple qui est un peu plus facile à comprendre dans le prochain élément "bouton".

* Bouton

Les boutons peuvent être créés avec "Button".

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#bouton
Button = Tkinter.Button(text=u'C'est un bouton')
Button.pack()

root.mainloop()

スクリーンショット 2015-02-21 15.19.02.png

.Button (text = u'caractère à afficher sur le bouton ')

Spécifiez la largeur du bouton

Il peut être spécifié par width = width.

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#bouton
Button = Tkinter.Button(text=u'C'est un bouton', width=50)
Button.pack()

root.mainloop()

スクリーンショット 2015-02-21 15.21.38.png

Lorsque vous appuyez sur le bouton, un traitement est effectué

Les boutons forment essentiellement des actions dans les fonctions (def :). Créons quelque chose qui supprime le contenu de l'entrée précédente en appuyant sur un bouton.

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#
#Appelé ici lorsque le bouton est enfoncé
#
def DeleteEntryValue(event):
  #Supprimer le contenu de l'entrée
  EditBox.delete(0, Tkinter.END)


#entrée
EditBox = Tkinter.Entry(width=50)
EditBox.insert(Tkinter.END,"Chaîne de caractères à insérer")
EditBox.pack()

#bouton
Button = Tkinter.Button(text=u'C'est un bouton', width=50)
Button.bind("<Button-1>",DeleteEntryValue) 
#Click gauche (<Button-1>), Bind pour appeler la fonction DeleteEntryValue
Button.pack()

root.mainloop()

.bind (" <Button-1> ", DeleteEntryValue) ʻest .bind (" cliquez sur le numéro de traitement ", fonction ou action à appeler) Il est configuré comme suit. Maintenant, lorsque le bouton est cliqué, la fonction spécifiée sera appelée. Cliquez sur "<Button-1>" "" est un clic de roue Faites un clic droit sur `` <Button-3> " est.

Il y a d'autres événements en plus des clics, mais je ne les toucherai pas ici. Pour plus de détails, veuillez consulter ce site

スクリーンショット 2015-02-21 15.25.41.png

Lorsque vous appuyez sur le bouton ↓, les caractères disparaissent

スクリーンショット 2015-02-21 15.26.07.png

Bien sûr, place

Entrée et bouton aussi. Vous pouvez le spécifier avec .place (x = hoge, y = hoge) au lieu de .pack ().

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#
#Appelé ici lorsque le bouton est enfoncé
#
def DeleteEntryValue(event):
  #Supprimer le contenu de l'entrée
  EditBox.delete(0, Tkinter.END)


#entrée
EditBox = Tkinter.Entry(width=30)
EditBox.insert(Tkinter.END,"Chaîne de caractères à insérer")
EditBox.place(x=5, y=10)


#bouton
Button = Tkinter.Button(text=u'C'est un bouton', width=25)
Button.bind("<Button-1>",DeleteEntryValue)
Button.place(x=105, y=60)

root.mainloop()

スクリーンショット 2015-02-21 15.47.15.png

* CheckBox

Ce gars était assez ennuyeux. Donc, je voudrais le diviser en petits morceaux un par un. Dans Tkinter, il semble qu'il s'appelle le bouton Vérifier au lieu de Case à cocher.

Créer un CheckBox

Utilisez .Checkbutton ().

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

CheckBox = Tkinter.Checkbutton()
CheckBox.pack()

root.mainloop()

スクリーンショット 2015-02-21 15.52.43.png

Donnez à la CheckBox un nom d'élément

Faites-le comme CheckBox = Tkinter.Checkbutton (text = u" nom de l'élément ").

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

CheckBox1 = Tkinter.Checkbutton(text=u"Objet 1")
CheckBox1.pack()

CheckBox2 = Tkinter.Checkbutton(text=u"Point 2")
CheckBox2.pack()

CheckBox3 = Tkinter.Checkbutton(text=u"Point 3")
CheckBox3.pack()

root.mainloop()

スクリーンショット 2015-02-21 15.54.36.png

Avoir des valeurs vérifiées et non vérifiées depuis le début

De là est la porte du démon. Vous devez toujours utiliser BooleanVar () pour que chaque case à cocher ait les valeurs "cochée" et "non cochée" par défaut. BooleanVar () est un type spécial qui ne peut stocker que deux choix, "True" ou "False".

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")

#
#Valeur initiale de chaque élément de la case à cocher
#
Val1 = Tkinter.BooleanVar()
Val2 = Tkinter.BooleanVar()
Val3 = Tkinter.BooleanVar()

Val1.set(False)
Val2.set(True)
Val3.set(False)

CheckBox1 = Tkinter.Checkbutton(text=u"Objet 1", variable=Val1)
CheckBox1.pack()

CheckBox2 = Tkinter.Checkbutton(text=u"Point 2", variable=Val2)
CheckBox2.pack()

CheckBox3 = Tkinter.Checkbutton(text=u"Point 3", variable=Val3)
CheckBox3.pack()

root.mainloop()

En stockant la ** valeur BooleanVar ** avec True ou False dans variable Vous pouvez spécifier s'il faut cocher ou non.

Une chose à noter ici est que si vous faites variable = True, vous obtiendrez un ** bug **. Vous devez toujours saisir des données de type BooleanVar.

スクリーンショット 2015-02-21 15.59.59.png

Obtenir si CheckBox est coché

Utilisez .get (). Dans l'exemple ci-dessus, «Val1» indique si CheckBox1 est coché ou non.

if Val1.get() == True:
Traitement une fois coché
else:
Traitement non coché

Vous pouvez l'obtenir comme ça.

échantillon

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import Tkinter
import tkMessageBox


root = Tkinter.Tk()
root.title(u"Software Title")
root.geometry("400x300")


#
#Obtenir le statut de vérification de la case à cocher
#
def check(event):
  global Val1
  global Val2
  global Val3
  
  text = ""
  
  if Val1.get() == True:
    text += "L'élément 1 est vérifié\n"
  else:
    text += "L'élément 1 n'est pas coché\n"
  
  if Val2.get() == True:
    text += "L'élément 2 est vérifié\n"
  else:
    text += "L'élément 2 n'est pas coché\n"
  
  if Val3.get() == True:
    text += "L'élément 3 est vérifié\n"
  else:
    text += "L'élément 3 n'est pas coché\n"
  
  tkMessageBox.showinfo('info',text)


#
#Valeur initiale de chaque élément de la case à cocher
#
Val1 = Tkinter.BooleanVar()
Val2 = Tkinter.BooleanVar()
Val3 = Tkinter.BooleanVar()

Val1.set(False)
Val2.set(True)
Val3.set(False)

CheckBox1 = Tkinter.Checkbutton(text=u"Objet 1", variable=Val1)
CheckBox1.pack()

CheckBox2 = Tkinter.Checkbutton(text=u"Point 2", variable=Val2)
CheckBox2.pack()

CheckBox3 = Tkinter.Checkbutton(text=u"Point 3", variable=Val3)
CheckBox3.pack()


button1 = Tkinter.Button(root, text=u'Obtenez un chèque',width=30)
button1.bind("<Button-1>",check)
button1.pack()

root.mainloop()

スクリーンショット 2015-02-21 16.11.23.png

↓ Si vous appuyez sur le bouton dans cette situation

スクリーンショット 2015-02-21 16.11.26.png

Le statut de vérification est acquis.

Ce message de dialogue utilise ce que l'on appelle "tkMessageBox". import tkMessageBox Est ajouté, tkMessageBox.showinfo ('nom du titre', 'contenu') Il peut être affiché avec.

C'est tout pour cette fois.

Recommended Posts

Essayez d'utiliser Tkinter de Python
Essayez d'utiliser Tkinter
Essayez d'utiliser l'analyseur de flux de Python.
Essayez d'utiliser le networkx de Python avec AtCoder
Essayez d'utiliser docker-py
Essayez d'utiliser Cookiecutter
Essayez d'utiliser PDFMiner
Essayez d'utiliser des géopandas
Essayez d'utiliser Selenium
Essayez d'utiliser pandas.DataFrame
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'utiliser PyODE
Essayez d'utiliser l'appareil photo avec OpenCV de Python
Essayez d'utiliser virtualenv (virtualenvwrapper)
[Azure] Essayez d'utiliser Azure Functions
Essayez d'utiliser virtualenv maintenant
Essayez d'utiliser W & B
Essayez d'utiliser Django templates.html
[Kaggle] Essayez d'utiliser LGBM
Essayez d'utiliser Tweepy [Python2.7]
Essayez d'utiliser collate_fn de Pytorch
Essayez de créer un Checkbutton dynamiquement avec Tkinter en Python
Variables d'environnement lors de l'utilisation de Tkinter
[Python] Essayez d'utiliser le canevas de Tkinter
Essayez d'utiliser l'image Docker de Jupyter
Essayez d'utiliser scikit-learn (1) - Clustering K par méthode moyenne
Essayez l'optimisation des fonctions à l'aide d'Hyperopt
Essayez d'utiliser matplotlib avec PyCharm
Essayez d'utiliser Azure Logic Apps
Essayez d'utiliser Kubernetes Client -Python-
[Kaggle] Essayez d'utiliser xg boost
Essayez d'utiliser OpenCV sur Windows
Essayez d'utiliser Jupyter Notebook de manière dynamique
Essayez d'utiliser AWS SageMaker Studio
Essayez d'utiliser SQLAlchemy + MySQL (partie 1)
Essayez d'utiliser SQLAlchemy + MySQL (partie 2)
Essayez d'utiliser la fonction de modèle de Django
Essayez d'utiliser l'API PeeringDB 2.0
Essayez d'utiliser la fonction de brouillon de Pelican
Envoyer du courrier à l'aide du smtplib de Python
Essayez d'utiliser pytest-Overview and Samples-
Essayez d'utiliser le folium avec anaconda
Essayez d'utiliser l'API Admin de la passerelle Janus
[Statistiques] [R] Essayez d'utiliser la régression par points de division.
Essayez d'utiliser Spyder inclus dans Anaconda
Essayez d'utiliser Pillow sur iPython (partie 1)
Créer une interface graphique python à l'aide de tkinter
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Essayez d'utiliser la fonction de débogage à distance de PyCharm
Essayez d'utiliser ArUco avec Raspberry Pi
Essayez d'utiliser LiDAR bon marché (Camsense X1)
[Serveur de location Sakura] Essayez d'utiliser flask.
Essayez de faire fonctionner la base de données en utilisant Peewee de ORM de Python (version août 2019)
Essayez d'utiliser Pillow sur iPython (partie 3)
Renforcer l'apprentissage 8 Essayez d'utiliser l'interface utilisateur de Chainer
Essayez d'obtenir des statistiques en utilisant e-Stat
Essayez d'utiliser l'API d'action de Python argparse