[英]Why does my tkinter label suddenly disappear?
我正在嘗試制作國際象棋 AI。 我需要一套國際象棋才能下棋。 我制作了棋子(它們可以被拖動)、棋盤、時鍾等。現在,我正試圖讓時鍾在有人玩的時候交替。 在我進行的一項使時鍾交替的測試中,人工智能的時鍾突然消失了。 我檢查了我是否忘記了任何事情,比如我是否添加了網格方法,將其放入根目錄,保存等等。我做了所有這些。 我嘗試更改行中的數字。 本來是0,我試了1,又出現了。 但是它不在我想要的地方,所以我再次將數字從 1 更改為 2,看看它是否仍然有效。 但是它消失了。 我放回了一個,但它仍然不見了(如果我保存了,我檢查了兩次)。 這是 ai 時鍾的代碼:
from root_frame import Root
from tkinter import Label
ai_turn = False
class AI:
def __init__(self):
self.the_screen = Root()
self.ai_label = Label(self.the_screen.root, text = "AI", font = "Helvetica 18 bold", width = 40)
self.ai_clock = Label(self.the_screen.root, font = "Helvetica 18 bold")
def set_timer(self):
self.t = 600
return self.t
def countdown(self):
global ai_turn
if self.t > 0 and ai_turn == True:
self.convert()
self.t = self.t - 1
self.ai_clock.after(1000, lambda: self.countdown())
print("it's running dum dum")
elif self.t == 0:
self.ai_clock.config(text = "ai loose")
elif ai_turn == False:
print("it's not running dum dum")
self.t = self.t
def convert(self):
self.seconds = self.t % (24 * 3600)
self.seconds %= 3600
self.minutes = self.t // 60
self.seconds %= 60
self.ai_clock.config(text = "%02d:%02d" % (self.minutes, self.seconds))
def stop(self):
global ai_turn
ai_turn = False
if ai_turn == False:
print("ai stopped, value: {}".format(ai_turn))
def go(self):
global ai_turn
ai_turn = True
if ai_turn == True:
print("ai active, value: {}".format(ai_turn))
這是我將它們網格化的地方:
class Screen:
def __init__(self):
self.AI = AI()
self.Human = Human()
self.AI.ai_clock.grid(row = 0, column = 9)
self.Human.human_clock.grid(row = 7, column = 8)
"Run functions to activate the clocks"
self.AI.set_timer()
self.AI.countdown()
self.Human.set_timer()
self.Human.countdown()
最后,這是 root_frame:
from tkinter import Tk
class Root:
root = Tk()
(有縮進,因為它在方法中)謝謝!
你只調用了一次self.AI.countdown()
。 在其中,只有在self.t>0
和ai_turn == True
時才啟動計時器。 但是, ai_turn
為False
,因此計時器永遠不會啟動。 如果您在程序開始時將ai_turn
設置為 True,計時器就會工作。
要發現這一點,您所要做的就是在if
語句之前放置一個print
語句,以驗證您對這些變量的假設。 另外,如果你給 label 一個不同的顏色,你會看到它在屏幕上但非常小,因為默認情況下它沒有文本。
換句話說,label 看起來很好,只要您有啟動計時器的邏輯就可以正確更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.