Проверьте, есть ли в списке кнопок текст - PullRequest
0 голосов
/ 25 апреля 2018

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

Вот код:

import tkinter as tk
from functools import partial


class ButtonTest():
  def __init__(self, master):
    self.parent = master

    self.buttons_list = []

    for i in range(5):
        for j in range(3):

            button_num = i * 3 + j
            button = tk.Button(self.parent, height=6, width=12)
            button.grid(row=i, column=j)


            button.bind("<Button-1>", partial(self.click, button_num))


            self.buttons_list.append(button)


    self.counter = []

    #def check_winner():


  def click(self, button_num, event):
    this_button = self.buttons_list[button_num]
    the_actual_counter = len(self.counter)

    if the_actual_counter % 2 == 0:
        this_button["text"] = "X"


    else:
        this_button["text"] = "O"

    self.counter.append("element")

master = tk.Tk()
BT = ButtonTest(master)
master.mainloop() 

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

С помощью buttons=[bttn1, bttn2, etc.] (или как вы их называете) вы можете сделать это, используя all:

def check_winner:
    again=all(i.cget("text") for i in buttons)
    if again:
        print("play again?") # or whatever
    else:
        print("game over!") # or whatever
0 голосов
/ 25 апреля 2018

Если L = [b1, b2, b3] (который вы создаете добавлением), тогда

def check_winner:
    c=0
    for i in L:
        if i.cget("text")=="":
            print("GAME OVER") # or whatever you want
            c=1
            break
    if c==0:
        print("PLAY AGAIN")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...