tkinter:Windows之间如何“导航”

问题描述

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

这将打开一个新的常规窗口,其中包含根据我选择的游戏传递的一些参数。 (以下代码中的my_window)

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

在下面的代码中,我使用功能Launch_the_game中的label(Label(my_window,text =“ game_num value” + str(game_num))。grid(row = 5,column = 0)模拟它。 此标签以根目录而不是my_window打印 怎么来的?

我不叫窗户对吗?还是创建它们正确? 谢谢
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_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()

解决方法

我的朋友发现了问题。 我分配的my_window = open_new_window...。它返回“空白”,而空白可能是= root。 所以2种固定方式 一个就是

        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

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

继续学习!