Как добавить кнопку сброса, которая очищает мой код? - PullRequest
0 голосов
/ 18 февраля 2019

Я делаю базовый пользовательский интерфейс TicTacToe на python и считаю, что основным элементом этого кода является кнопка сброса, которая сбрасывает ваши коды до значений по умолчанию.Есть ли другой способ сделать это?

Я пытался определить функцию, которая сбрасывает текст кнопки обратно на "", но я не думаю, что это хорошая идея из-за множества другихсложности в коде.

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

Итак, я хочу добавить здесь кнопку с надписью «Сбросить текст», и она сбрасывает все коды по умолчанию.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Вот код, демонстрирующий, как можно сделать что-то подобное (плюс несколько других вещей):

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()
0 голосов
/ 18 февраля 2019

Самый простой способ сбросить игру - это

  • Сбросить пользовательский интерфейс, как вы предлагаете, с помощью отдельной выделенной функции reset_UI()
  • Сбросить состояние доски, создавновый объект игрового поля и отказ от старого

Это, конечно, означает, что вам нужно будет обернуть все свои переменные и функции в класс доски Board, чтобы не быломиллиард глобальных переменных, которые вы должны беспокоиться о сбросе.Единственное, что должно сохраняться между перезагрузками - это кнопки вашего пользовательского интерфейса, которые можно создать в вашей функции main() до инициализации игрового поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...