【问题标题】:tkinter : how "naviguate" between windowstkinter:如何在窗口之间“导航”
【发布时间】:2020-08-26 23:08:42
【问题描述】:

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

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

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

在下面的代码中,我在函数 Launch_the_game. 此标签打印在 root 中,而不是 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_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()

【问题讨论】:

    标签: tkinter


    【解决方案1】:

    我的朋友发现了问题。 我正在分配 my_window = open_new_window .... 它返回“空白”,而空白可能是 = root。 所以有两种修复方法。 一种是

            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
    
    

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

    继续学习!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 2021-07-15
      • 2021-12-08
      • 2012-02-21
      相关资源
      最近更新 更多