Ich arbeite an einem Programm, das eine Konfigurationsdatei für ein eingebettetes Hardwaresystem liest und analysiert, an dem ich gerade arbeite. Ich versuche mit tkinter und python eine einfache GUI zum Lesen und Schreiben dieser Datei zu erstellen. Ich habe die Datei IO und Parsing meistens funktioniert, aber ich habe Probleme, alle Teile mit der GUI integriert zu bekommen. Ich möchte die Informationen aus dem Gerät lesen und dann die Eingabefelder mit den entsprechenden Informationen füllen. Das Problem, das ich habe, ist, halte ich den Fehler bekommenTkinter Button kann den Callback-Befehl nicht finden
"in initUI
opnBut = Button(butFrm, text="Open", command=openCfg)
NameError: name 'openCfg' is not defined"
ich kann es die Funktion zu finden, wenn ich es außerhalb der Anwendungsklasse setzen, aber dann kann ich nicht herausfinden, wie die Felder verweisen innen das Fenster, das ich gemacht habe, um sie zu aktualisieren.
Jede Hilfe würde sehr geschätzt werden. Mein Code-Segment ist unten enthalten.
class Application(Frame):
def openCfg():
name = getNameFromFile()
nameEntry.insert(0, name)
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Config Reader")
self.pack(fill=BOTH, expand=True)
nameFrm = Frame(self)
nameFrm.pack(fill=X)
nameLbl = Label(nameFrm, text="Device Name",width=20)
nameLbl.pack(side=LEFT,padx=5, pady=5)
nameEntry = Entry(nameFrm)
nameEntry.pack(fill=X, padx=5, pady=5)
butFrm = Frame(self)
butFrm.pack(fill=X)
opnBut = Button(butFrm, text="Open Cfg", command=openCfg)
opnBut.pack(fill=X, padx=5,pady=5)
root = Tk()
root.geometry("600x600")
app = Application(root)
app.mainloop()
einrücken richtig – Li357
Ich glaube, Sie 'self.openCfg' gemeint, sondern (wie Andrew sagte) Ihr Code würde eine IndentationError werfen, wenn dies wirklich ist. – zondo