Как вы ждете, чтобы пользователь нажал кнопку tkinter с потоками - PullRequest
0 голосов
/ 29 апреля 2020

Я сейчас работаю над проектом, похожим на ti c ta c toe (с ИИ) И я сделал GUI, чтобы позволить пользователю играть с ботом. Но программа не ждет игрок, чтобы выбрать, и вместо этого он взамен sh, потому что он не имеет значения

Так что я ищу потоки, пытался долго не могу понять, как это работает, я сделал несколько тестов ( ниже), что мой архив похож на то, что мне нужно делать с моим кодом, но он не работает, и у кого-то есть ответ?

import threading
import tkinter as tk

windo = tk.Tk()
windo.title("Morpion")
windo.resizable(width=tk.FALSE, height=tk.FALSE)

class Player:
    def __init__(self,name):
        self.name = name
        self.choice = None

def Change_Var(x):
    print(P.choice)
    P.choice = x
    print(P.choice)
    play_event.set()

def boucle():
    i = 0
    while not play_event.isSet() and i < 3000:
        print(i)
        i += 1

P = Player("Deltix")
start = tk.Button(height=2,width=8, text = "Start",command = lambda x = 0 : Change_Var(x))
start.grid(column = 2, row = 3,pady = 5)

play_event = threading.Event()
threading.Thread(target = windo.mainloop()).start
threading.Thread(target = boucle()).start```

1 Ответ

0 голосов
/ 29 апреля 2020

Вам не нужно использовать потоки, просто используйте события.

Скажем, вы хотите связать функцию с клавишей ввода.

Это будет ваш код:

canvas = Canvas(master)
def clicked(event):
    print("Enter was pressed")
canvas.bind("<Return>", clicked)

Подробнее о событиях tkinter можно узнать здесь .

Надеюсь, это поможет!

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