首页 > 解决方案 > 如何根据全局变量是真还是假来显示 Tkinter 帧?

问题描述

我正在尝试使用 Tkinter 在 Python 中制作一个简单的图形记忆卡游戏。

为此,我想显示三个不同的页面。要在一个页面之间交换另一个页面,我使用 .tkraise() 来推动不同的框架以显示在窗口上。但是我无法显示 high_score_page (框架)。

我的想法是,通过使用一开始设置为 False 的全局变量“win”,当“win”变量为 True 时,我将显示 high_score_page。我为此使用了 if 语句。所以

if win is True: high_score_page(master)

前两页(“input_page”和“game_page”)显示得很好,但 high_score_page 不会显示。

你们对如何解决这个问题有任何想法吗?

感谢所有输入,谢谢:)

GitHub 分支

这是一些代码:

def input_page(master):

    frame_start = Frame(master)
    frame_start.grid(row=0, column=0, sticky="news")

    label_input = Label(frame_start, text="How many rows would you like to have?:")
    label_input.grid(row=0, column=0)

    entry_rows = Entry(frame_start)
    entry_rows.grid(row=0,column=1)

    start = Button(frame_start, text="start", command=lambda: game_page(entry_rows.get(), master))
    start.grid(row=1, column=0)


def game_page(entry, master):

    global win

    if win is True:
        high_score_page(master)
        print(win)

    if win is False:
        frame_game = Frame(master)
        frame_game.grid(row=0, column=0, sticky="news")
        rows = get_board_size(entry)

        buttons = create_buttons(rows, frame_game)
        place_buttons(frame_game, buttons)

        frame_game.tkraise()


def high_score_page(master):

    frame_high_score = Frame(master)
    frame_high_score.grid(row=0, column=0, sticky="news")

    name_entry = Label(frame_high_score, text="blablabla")
    name_entry.grid(column=0, row=0)

    frame_high_score.tkraise()

标签: pythonif-statementtkintergraphics

解决方案


推荐阅读