如何添加清除我的代码的重置按钮?

时间:2019-02-18 01:05:05

标签: python tkinter

我正在用python创建一个基本的TicTacToe UI,并且我相信此代码的基本项是一个reset按钮,该按钮会将您的代码重置为默认值。还有其他方法吗?

我试图定义一个将按钮的文本重新设置为“”的函数,但是由于鳕鱼内的许多其他复杂性,我认为这不是一个好主意。

from tkinter import *
root = Tk()
def changetext():
  BTN1["text"] = "X"
BTN1 = Button(root, text=" ", command=changetext)
BTN1.pack()
root.mainloop()

所以我想在此处添加一个按钮,上面写着“重置文本”,并将所有代码重置为默认代码。

2 个答案:

答案 0 :(得分:0)

重置游戏的最简单方法是

  • 使用一个专用的reset_UI()功能按照您的建议重置UI
  • 通过创建新的游戏棋盘对象并丢弃旧的棋盘对象来重置棋盘状态

这当然意味着您需要将所有变量和函数包装在板类Board中,这样就不必担心复位时会产生十亿个全局变量。重置之间唯一应该保留的是UI按钮,可以在初始化游戏面板之前在main()函数中创建这些按钮。

答案 1 :(得分:0)

以下代码演示了如何完成类似操作(以及其他一些操作):

import tkinter as tk


def toggle(btn):
    if btn["text"] == "X":
        btn["text"] = " "
    else:
        btn["text"] = "X"

def reset(buttons):
    for btn in buttons.values():
        btn["text"] = " "

root = tk.Tk()

buttons = {}
for row in range(3):
    for col in range(3):
        button = tk.Button(root, text=" ", width=1, height=1)
        button.config(command=lambda btn=button: toggle(btn))
        button.grid(row=row, column=col)
        buttons[row, col] = button

reset_button = tk.Button(root, text="Reset", command=lambda: reset(buttons))
reset_button.grid(columnspan=3)
root.mainloop()