Tkinter 特金特:如何;naviguate“;窗间

Tkinter 特金特:如何;naviguate“;窗间,tkinter,Tkinter,我在学习。 我有一个根窗口,在这个窗口中,玩家单击一个按钮启动,然后通过单击另一个按钮选择要玩的游戏(1、2或…) 这将打开一个新的通用窗口,其中包含一些参数,我将根据所选游戏通过这些参数。(下面代码中的my_窗口) 在这个新窗口中,我找不到一种方法来确保打印标签或实际启动游戏是在我的窗口中完成的 在下面的代码中,我使用函数Launch\u the\u game中的label(label(my\u window,text=“game\u num value”+str(game\u num)).g

我在学习。 我有一个根窗口,在这个窗口中,玩家单击一个按钮启动,然后通过单击另一个按钮选择要玩的游戏(1、2或…)

这将打开一个新的通用窗口,其中包含一些参数,我将根据所选游戏通过这些参数。(下面代码中的my_窗口)

在这个新窗口中,我找不到一种方法来确保打印标签或实际启动游戏是在我的窗口中完成的

在下面的代码中,我使用函数Launch\u the\u game中的label(label(my\u window,text=“game\u num value”+str(game\u num)).grid(row=5,column=0)模拟它。 此标签以root打印,而不是在my_窗口中 为什么

我不是在正确地调用窗口吗?还是在正确地创建窗口? 多谢各位

from tkinter import *

def launch_the_game():
        global my_window
        global game_num

        Label(my_window, text = "game_num value"  + str(game_num)).pack()
        
def open_new_window(game_num,game_name, dimensions, game_rule):
    global my_window

    my_window = Toplevel()
    my_window.title(game_name)
    my_window.geometry(dimensions)
    Label(my_window, text = "" + game_rule).grid( row = 3, column = 0)
    Button(my_window, text = "LAUNCH " + game_name, command= launch_the_game ) .grid( row = 4, column = 0) 


def assign_game(value):

    global game_name
    global dimensions
    global game_rule
    global game_num
    global my_window
    
    game_num = value

    if value  == 1:
        game_name  = "Guess my number"
        dimensions = "400x600"
        game_rule = " guess a number between 0 and 100"
        game_num = str(value)

    my_window=open_new_window(game_num,game_name, dimensions, game_rule)

    
def my_click_name_UI():

    btn1 = Button(root, text="Guess my number", command= lambda *args: assign_game(1)).pack()
    btn2 = Button(root, text="Guess my name", command= lambda *args: assign_game(2)).pack()

        
root = Tk(className =' Best game ever ! ')
root.geometry("450x150")
root.configure(bg="light blue")
btn3 = Button(root, text="Go play the games!", command=my_click_name_UI)
btn3.pack()

mainloop()


我的朋友发现了这个问题。 我正在分配我的\u窗口=打开\u新的\u窗口…它返回“空白”,空白可能是=根。 所以有两种固定方法。 一个是

        game_name  = "Guess my number"
        dimensions = "400x600"
        game_rule = " guess a number between 0 and 100"
        game_num = str(value)

  open_new_window(game_num,game_name, dimensions, game_rule)

在这两种情况下,这都有效。 他还告诉我开始学习什么是类,并正确编写代码,以便于阅读;)

继续学习

    global my_window

    my_window = Toplevel()
    my_window.title(game_name)
    my_window.geometry(dimensions)
    Label(my_window, text = "" + game_rule).grid( row = 3, column = 0)
    Button(my_window, text = "LAUNCH " + game_name, command= launch_the_game ) .grid( row = 4, column = 0) 
    return my_window