Ich habe einen Frame erstellt, gab ihm eine Menüleiste. Funktioniert gut. Der Zweck des Eintrags in der Menüleiste ist es, einen neuen Rahmen zu öffnen, in dem Sie einige Einstellungen ändern können. Die Erstellung des neuen Fensters funktioniert auch. Ich kann jedoch keine Widgets im neu erstellten Fenster erstellen. Ich versuchte es mit einem Button und bekam eine TclError: kann nicht "button" -Befehl: Anwendung wurde zerstörtTkinter hinzufügen Widgets (ein Button) zu einem neuen zweiten Frame
Ich habe versucht, es googeln und Cannot invoke button command: application has been destroyed gefunden, die mir nicht ganz geholfen hat. Weiter habe ich eine Lösung gefunden, wo du eine Elternklasse erstellen musst (die von Frame stammt) und dann alle anderen Frames darin, aber in der ersten Ansicht sah es ziemlich kompliziert aus. Vor allem, weil die Erstellung des zweiten Fensters in erster Linie zu funktionieren scheint.
ich dies weiß, ist wahrscheinlich eine wirklich grundlegende Frage, so Vielen Dank im Voraus für Ihre Zeit
def perfSettings():
perfFrame = Tk(className=" Performanz Einstellungen")
perfFrame.configure(bg='#F2F2F2')
perfFrame.geometry("300x300")
perfFrame.mainloop()
btn = Button(master=perfFrame, text='Speichern', command=myPerfSettingValue.getValues, width=37)
btn.pack()
# Button(perfFrame, text='Abbrechen', command=perfFrame.destroy, width=37).grid(row=0 ,column=1)
class perfSettingsValue:
def __init__(self):
self.bvhSteps = 0
def getValues(self):
pass
#Hauptfenster
root = Tk(className="BoneMapping & SkeletonEstimation")
root.configure(bg='#F2F2F2')
root.geometry("1300x600")
myPerfSettingValue = perfSettingsValue()
menubar = Menu(root)
sdmenu = Menu(menubar, tearoff=0)
sdmenu.add_command(label="Performanz", command=perfSettings)
menubar.add_cascade(label='Einstellungen',menu=sdmenu)
root.config(menu=menubar)
Erstellen Sie keine zweite Tk-Instanz. Verwenden Sie stattdessen Toplevel und Hauptschleife sollte am Ende für diese sein. Sie sollten mehr darüber lesen, was Hauptschleife ist und was sie tut. – Lafexlos