Nous les ferons réapparaître dans le Programme créé par le lycéen K. Le résultat de l'exécution ressemble à ceci Lorsque vous appuyez sur le bouton, la valeur compte. Le programme qui a utilisé tk pour la première fois est bien fait. Je pense que c'est bien de pouvoir réaliser un programme qui fonctionne comme prévu.
Fabriqué par M. K
import tkinter as tk
count = 0
def dispLabel():
global count
count = count + 1
lbl.configure(text = str(count) + "Pressé deux fois")
root = tk.Tk()
root.geometry("300x80")
lbl = tk.Label(text="Bouton de comptage")
btn = tk.Button(text="presse", command = dispLabel)
lbl.pack()
btn.pack()
tk.mainloop()
Cependant, il s'agit d'un programme qui stocke la valeur du compteur en tant que variable globale et ressemble à un modèle pour les débutants.
Dans un programme réel, le contenu de traitement peut être plus compliqué ou un traitement similaire peut se produire plusieurs fois. En introduisant l'orientation objet, vous pouvez créer des programmes efficacement. Le programme de M. K n'avait qu'un bouton qui compte les nombres, mais en supposant que d'autres boutons y seront ajoutés, j'essaierai de le transformer en un programme orienté objet
Avec la méthode de programmation de K, le problème avec l'ajout de boutons est qu'il est nécessaire d'ajouter des variables globales telles que count1 et count2 à l'ajout de bouton. Le processus d'affichage dans TK et le processus de comptage sont intégrés et non séparés. Il semble bon de créer un objet pour compter et avoir une variable de comptage à l'intérieur de cet objet.
class Counter():
def __init__(self):
self.count = 0
def get_next_value(self):
self.count +=1
return str(self.count)
Initialisez count avec \ _ \ _ init__ () et comptez chaque fois que vous appelez get_next_value ().
J'ai également réalisé DownCounter et CounterAlphabet. La classe Application est un objet qui affiche des boutons et des étiquettes et met à jour l'affichage lorsque le bouton est enfoncé. J'ai essayé de gérer la classe Application en me référant à Explication of Tcl / Tkcl / Tk.
import tkinter as tk
class Counter():
def __init__(self):
self.count = 0
def get_next_value(self):
self.count +=1
return str(self.count)
class DownCounter(Counter):
def __init__(self):
self.count = 99
def get_next_value(self):
self.count -=1
return str(self.count)
class CounterAlphabet(Counter):
word_list = ["zero", "one", "two", "three"]
def get_next_value(self):
self.count +=1
try:
return self.word_list[self.count]
except IndexError:
return "many"
class Application(tk.Frame):
def __init__(self, master):
super().__init__(master)
self.master = master
self.master.geometry("300x160")
self.pack()
def add_button(self, counter, label="Bouton de comptage", msg="Pressé deux fois"):
lbl = tk.Label(text=label)
def update_label():
str = counter.get_next_value()
lbl.configure(text = str + msg )
btn = tk.Button(text="presse", command = update_label)
lbl.pack()
btn.pack()
root = tk.Tk()
app = Application(root)
counter1 = Counter()
counter2 = DownCounter()
counter3 = CounterAlphabet()
app.add_button(counter1, "Bouton de comptage")
app.add_button(counter2, "Bouton de compte à rebours","Fois")
app.add_button(counter3, "Bouton de comptage(Anglais)"," times")
app.mainloop()
Résultat d'exécution
Merci K d'avoir fourni le programme.
M. shiracamus a commenté un exemple plus sophistiqué. Veuillez vous référer à la section des commentaires. D'autres modifications magiques sont les bienvenues.
Recommended Posts