2017-12-13 3 views

Antwort

4

Es kommt mehr darauf an, welches Root-Fenster verwendet werden soll. Es ist standardmäßig der erste Stamm, der erstellt wurde. Manchmal (sehr selten) müssen Sie jedoch Tk() mehr als einmal in einem Programm verwenden. In diesem Fall ist es wichtig, alle Variablen dem entsprechenden Root zuzuordnen.

Hier ist ein Beispiel:

import tkinter as tk 

class menu: 
    def __init__(self): 
     self.game = tk.Tk() 
     self.game.geometry('200x200') 
     self.var = tk.StringVar() 
     #~ self.var = tk.StringVar(master=self.game) # this solves the problem 
     ent = tk.OptionMenu(self.game, self.var, 'one', 'two', 'three', 'four') 
     ent.pack() 
     lbl = tk.Label(self.game, textvariable=self.var) 
     lbl.pack() 
     btn = tk.Button(self.game, text="new window", command=self.playagain) 
     btn.pack() 
     self.game.mainloop() 

    def playagain(self): 
     menu() 

menu() 
+0

Ich sehe, ich wusste nicht, dass es standardmäßig die erste Wurzel erstellt. –

+1

@ self.bcl alle tkinter Widgets tun das. – Novel