Ich habe versucht, den Code des Python-Anfängers (Schüler der Mittelstufe) in objektorientiertes Knuspriges umzuwandeln

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 コメント 2019-11-17 160125.png 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.

Programm im Kommentar erhalten

Herr Shiracamus kommentierte ein differenzierteres Beispiel. Bitte beachten Sie den Kommentarbereich. Weitere magische Modifikationen sind willkommen.

Recommended Posts

Ich habe versucht, den Code des Python-Anfängers (Schüler der Mittelstufe) in objektorientiertes Knuspriges umzuwandeln
Ich habe versucht, den Code des Python-Anfängers (Schüler der Mittelstufe) zu überarbeiten.
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
[Python] Ein Schüler der Mittelstufe implementierte Perceptron und versuchte, Iris zu klassifizieren.
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Programmieranfänger (Schüler der Mittelstufe) Optimieren Sie den erstellten Algorithmus
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Von null Python-Kenntnissen bis hin zur KI in der ersten Klasse der Junior High School
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
(Python) Ich habe versucht, 1 Million Hände zu analysieren ~ Ich habe versucht, die Anzahl der AA ~ zu schätzen
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
[Python] Ich habe versucht, das Mitgliederbild der Idolgruppe mithilfe von Keras zu beurteilen
Ich habe versucht, die Tweets von JAWS DAYS 2017 mit Python + ELK einfach zu visualisieren
Ich habe versucht, die 100-Yen-Lagerstätte von Rakuten-Pferderennen (Python / Selen) zu automatisieren.
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Python-Übung 100 Schläge Ich habe versucht, den Entscheidungsbaum von Kapitel 5 mit graphviz zu visualisieren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, das Artikel-Update des Livedoor-Blogs mit Python und Selen zu automatisieren.
mong - Ich habe versucht, den Code, der zufällig den Containernamen von Docker generiert, nach Python zu portieren. -
Die Kombinationsgenerierung von Python-Anfängern (Schüler der Mittelstufe) lag diagonal darüber (Kombinationsgenerierung durch rekursive Verarbeitung)
Ich habe versucht, Pytest in die eigentliche Schlacht zu bringen
[Python] Ich habe versucht, die Top 10 der Lidschatten grafisch darzustellen
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich hatte das Gefühl, dass ich den Python-Code nach C ++ 98 portiert habe.
[Python] Ich habe versucht, Json von Tintenfischring 2 zu bekommen
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit dplyr von R und pandas von Python zu vergleichen
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, den Beispielcode des Ansible-Moduls auszuführen
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Ich habe "Streamlit" ausprobiert, das den Python-Code so wie er ist in eine Webanwendung verwandelt
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
[Markov-Kette] Ich habe versucht, negative Emotionen in Python zu laden.
[Markov-Kette] Ich habe versucht, die Zitate in Python einzulesen.
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
Der Prozess, Python-Code objektorientiert zu machen und zu verbessern