Ich habe eine Toplevel-Klasse DesignWindow
, die ein 10x10 Array von Tasten halten, wenn ich es auf die hier besprochene Weise anrufe: Tkinter; Toplevel in a new class es erstellt das Fenster innerhalb der letzten.Toplevel Inhalte im vorherigen Frame anzeigen
Was ich falsch gemacht habe? Der einzige Unterschied ist, dass mein "root" -Fenster (mit dem Menü) ein tk.Frame anstelle der tk.Tk in der zitierten Frage ist.
class MainWindow(tk.Frame):
"""Draw the main window"""
def __init__(self, parent):
tk.Frame.__init__(self, parent, background='grey')
self.parent = parent
self.menuscreen = MenuScreen(self)
self.grid()
self.menuscreen.design.grid(column=0, row=0)
class MenuScreen(tk.Frame):
"""Create the menu screen"""
def __init__(self, parent):
self.design = tk.Button(command=self.create_design_window, text="Design")
def create_design_window(self):
self.design_window = DesignWindow(self)
class DesignWindow(tk.Toplevel):
"""Frame for design mode"""
def __init__(self, main):
tk.Toplevel.__init__(self)
EDIT Erzeugung der Buttons:
self.btn = [[0 for x in range(10)] for x in range(10)]
for column in range(10):
for row in range(10):
self.btn[column][row] = tk.Button(main)
self.btn[column][row].grid(column=column, row=row)
Bitte lesen Sie [So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) –
Muss 'MenuScreen .__ init__' nicht aufgerufen werden, ist es super und brauchen Sie nicht Übergeben der Eltern an beide Superkonstruktoren. –
Tut mir wirklich leid, vergaß die Top-Klasse hinzuzufügen, die das Rendering-Bit tatsächlich tut:/ –