2016-06-19 10 views
2

Ich bin neu in Tkinter. Ich möchte ein Hauptmenü erstellen, nachdem ich auf den Button PLAY geklickt habe, sollte es ein neues Fenster mit einer Reihe von Buttons erstellen. Jede Schaltfläche in diesem neuen Fenster sollte ein anderes Fenster erstellen (und das aktuelle Fenster schließen). Aber mein Problem ist, dass wenn ich auf den Button PLAY klicke, öffnet es alle Fenster.tkinter, mehrere Top-Level-Fenster

from tkinter import * 


class Choices: 

    def __init__(self, master): 
     root.minsize(width=False, height=False) 
     root['bg'] = 'forest green' 
     self.master = master 
     b_color = 'red' 
     b_width = 30 
     b_height = 4 
     b_pady = 10 
     self.headline = Label(self.master, text='Welcome to Casino', bg='forest green', font=('broadway', 30)) 
     self.headline.grid() 
     self.buttons_frame = Frame(master, bg='forest green') 
     self.buttons_frame.grid() 
     self.b_play = Button(self.buttons_frame, text='PLAY', bg=b_color, width=b_width, height=b_height, command=self.play) 
     self.b_play.grid(pady=b_pady) 
     self.b_credits = Button(self.buttons_frame, text='CREDITS', bg=b_color, width=b_width, height=b_height) 
     self.b_credits.grid(pady=b_pady) 
     self.b_quit = Button(self.buttons_frame, text='QUIT', command=root.quit, bg=b_color, width=b_width, 
          height=b_height) 
     self.b_quit.grid(pady=b_pady) 

    def play(self): 
     root.withdraw() 
     self.pick = Toplevel(self.master) 
     self.game = GamePick(self.pick) 


class GamePick: 

    def __init__(self, master): 
     self.master = master 
     self.buttons_frame = Frame(self.master) 
     self.buttons_frame.grid() 
     b_jack = Button(self.buttons_frame, text='Black Jack', bg='snow4', command=self.do_black_jack()) 
     b_jack.grid() 


    def do_black_jack(self): 
     root.withdraw() 
     self.var_bj = Toplevel(self.master) 
     self.open_bj = BlackJack(self.var_bj) 


class BlackJack: 

    def __init__(self, master): 
     self.master = master 
     label = Label(self.master, bg='green', text='It is working') 
     label.grid() 

root = Tk() 
my = Choices(root) 
root.mainloop() 

Antwort

0

Ihr Problem zu beheben:

Im __init__() von GamePick() Klasse, diese Codezeile ändern:

b_jack = Button(self.buttons_frame, text='Black Jack', bg='snow4', command=self.do_black_jack()) 

An:

b_jack = Button(self.buttons_frame, text='Black Jack', bg='snow4', command=self.do_black_jack) 

Was haben wir einfach entfernen () von command = self.do_black_jack()

+0

Grund für den Downvote? Meine Antwort ist korrekt und ich habe das OP-Programm auf meinem Rechner getestet. –