如何在tkinter中重新启动程序

时间:2013-07-29 06:32:48

标签: python tkinter

我正在使用tkinter编写一个简单的游戏,并希望最后一个选项能够重放游戏,但我不确定如何去做。我希望能够回到我定义init的开头。还有一种方法我可以做到这一点,而不必退出它,所以我可以保存分数,因为玩家一直在玩。

from tkinter import *
import random

class App:
    def __init__(self, master):
        player_dice = []
        for i in range(1,6):
            x = random.randint(1,6)
            player_dice.append(x)
            self.label = Label(master, text = x , fg = "red").grid(row =0, column =i+1)

        self.label = Label(master, text = "Dice:" , fg = "red").grid(row =0, column =1)

        self.hi_one = Button(master, text="one", command= lambda: say_one(player_dice)).grid(row = 1, column = 1)
        self.hi_two = Button(master, text="two", command= lambda: say_two(player_dice)).grid(row = 1, column = 2) 

在这里,我想添加一个循环回到init的按钮。

def num(var, die, dlist):
    new_window = Toplevel(root)
    if die == 1:
        if guess == total:
            result = Message(new_window, text = "You Win").grid(row = 1, column = 1) 
        else:
            result = Message(new_window, text = "You Lose").grid(row = 1, column = 1)
            restart = Button(new_window, text = "Play Again", command = ?????).grid(row=1, column = 2) 

1 个答案:

答案 0 :(得分:1)

最简单的方法:

只需添加一个重置游戏的函数resetBoard即可。 显然,UI的各个部分不需要重新设置,因此可以进入__init__,其余部分可以进入resetBoard(),您可以(可能)调用{{1} } {来自resetBoard()

正确的方式:

实现MVC或MVP模式:将数据和逻辑与UI分开。您的视图(UI)应该反映模型中的任何内容,然后重新设置游戏只是重置模型并触发正确事件的问题,以便更新视图(非常简单,但非常有用的模型 - 视图 - XXX模式不能只需几句话即可妥善解释。)