Wir werden sie im Programm wieder erscheinen lassen, das von Herrn K, einem Schüler der Mittelstufe, erstellt wurde. Das Ausführungsergebnis sieht so aus Wenn Sie die Taste drücken, zählt der Wert hoch. Das Programm, das tk zum ersten Mal verwendet hat, ist gut gemacht. Ich finde es gut, ein Programm realisieren zu können, das wie erwartet funktioniert.
Hergestellt von Herrn K.
import tkinter as tk
count = 0
def dispLabel():
global count
count = count + 1
lbl.configure(text = str(count) + "Zweimal gedrückt")
root = tk.Tk()
root.geometry("300x80")
lbl = tk.Label(text="Zählschaltfläche")
btn = tk.Button(text="Drücken Sie", command = dispLabel)
lbl.pack()
btn.pack()
tk.mainloop()
Es ist jedoch ein Programm, das den Zählerwert als globale Variable speichert und wie ein Modell für Anfänger ist.
In einem tatsächlichen Programm kann der Verarbeitungsinhalt komplizierter sein oder eine ähnliche Verarbeitung kann viele Male auftreten. Durch die Einführung der Objektorientierung können Sie Programme effizient erstellen. Das Programm von Herrn K hatte nur eine Schaltfläche, die die Zahlen hochzählt. Unter der Annahme, dass weitere Schaltflächen hinzugefügt werden, werde ich versuchen, es in ein objektorientiertes Programm umzuwandeln
Bei der Programmiermethode von K besteht das Problem beim Hinzufügen von Schaltflächen darin, dass globale Variablen wie count1 und count2 zum Hinzufügen von Schaltflächen hinzugefügt werden müssen. Der Prozess der Anzeige in TK und der Prozess des Aufzählens sind integriert und nicht getrennt. Es scheint gut, ein zu zählendes Objekt zu erstellen und eine Zählvariable in diesem Objekt zu haben.
class Counter():
def __init__(self):
self.count = 0
def get_next_value(self):
self.count +=1
return str(self.count)
Initialisieren Sie count mit \ _ \ _ init__ () und zählen Sie jedes Mal hoch, wenn Sie get_next_value () aufrufen.
Ich habe auch DownCounter und CounterAlphabet gemacht. Die Anwendungsklasse ist ein Objekt, das Schaltflächen und Beschriftungen anzeigt und die Anzeige aktualisiert, wenn die Schaltfläche gedrückt wird. Ich habe versucht, die Anwendungsklasse unter Bezugnahme auf Erläuterung von Tcl / Tkcl / Tk zu verwalten.
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="Zählschaltfläche", msg="Zweimal gedrückt"):
lbl = tk.Label(text=label)
def update_label():
str = counter.get_next_value()
lbl.configure(text = str + msg )
btn = tk.Button(text="Drücken Sie", command = update_label)
lbl.pack()
btn.pack()
root = tk.Tk()
app = Application(root)
counter1 = Counter()
counter2 = DownCounter()
counter3 = CounterAlphabet()
app.add_button(counter1, "Zählschaltfläche")
app.add_button(counter2, "Countdown-Taste","Mal")
app.add_button(counter3, "Zählschaltfläche(Englisch)"," times")
app.mainloop()
Ausführungsergebnis
Vielen Dank an K für die Bereitstellung des Programms.
Herr Shiracamus kommentierte ein differenzierteres Beispiel. Bitte beachten Sie den Kommentarbereich. Weitere magische Modifikationen sind willkommen.
Recommended Posts