Python: Tkinter: Warum ist es root.mainloop() und nicht app.mainloop()

Ich bin ein neues Mitglied zu Stack Overflow.
Ich fand diesen thread, aber wurde nicht erlaubt, zu kommentieren oder Fragen zu stellen, so dass ich dachte, ich würde nur darauf verweisen hier: Wie kann ich eine in der interaktiven Liste in Python ' s Tkinter komplett mit Tasten, kann die Bearbeitung dieser Inserate?

from tkinter import *
import os
import easygui as eg

class App:

    def __init__(self, master):
        frame = Frame(master)
        frame.pack()

        # character box
        Label(frame, text = "Characters Editor").grid(row = 0, column = 0, rowspan = 1, columnspan = 2)
        charbox = Listbox(frame)
        for chars in []:
            charbox.insert(END, chars)
        charbox.grid(row = 1, column = 0, rowspan = 5)
        charadd = Button(frame, text = "   Add   ", command = self.addchar).grid(row = 1, column = 1)
        charremove = Button(frame, text = "Remove", command = self.removechar).grid(row = 2, column = 1)
        charedit = Button(frame, text = "    Edit    ", command = self.editchar).grid(row = 3, column = 1)

    def addchar(self):
        print("not implemented yet")
    def removechar(self):
        print("not implemented yet")
    def editchar(self):
        print("not implemented yet")


root = Tk()
root.wm_title("IA Development Kit")
app = App(root)
root.mainloop()

Könnte jemand mir erklären, warum die Letzte Zeile ist root.mainloop()?
Ein Anfänger mit Python, und kommen aus einem hintergrund, der von Verfahrens-orientiert mit keine Objekt-orient-Erfahrung, hätte ich gedacht wäre es gewesen, app.mainloop().

In der Tat app = App(root) , app wird nie wieder verwendet und der rest des Codes! Ich habe Schwierigkeiten zu verstehen, warum root.mainloop() funktioniert immer noch.

Also, wenn Sie Sie initialisieren Ihre App Klasse mit root, die __init__ - Funktion ausgeführt, in der die ganzen GUI-Komponenten geladen werden. mainloop ist eine Methode der Tk beginnt die Ereignis-Schleife des Fensters. Wir haben daher keine Notwendigkeit zu re-Referenz die class (obwohl wir technisch tun, innerhalb der class selbst), weil alles, was wir brauchen, ist getan, wenn wir initialisieren, dass class.

InformationsquelleAutor Nuuk | 2014-03-27

Schreibe einen Kommentar