我遇到的问题是我的图片标签不会更新。我已经使用了root.update()root.update_idletasks()等的大型组合,我也在互联网上经历了许多试图使用他们的解决方案的帖子,但无济于事。
我将代码拆分为一个类和两个函数,第一个函数将检查用户是否具有正确的拼写,第二个函数将从dict中选择一个新的随机单词和图像。
问题是图像不会更新,打印命令正在运行,因此类和函数工作正常。
这是迄今为止的代码,我是新手使用Class和 init 我认为测试tkinter的.update的最佳方法是拼写游戏
from tkinter import *
import random
words = {"apple": "apple.gif", "car": "car.gif"}
MAIN_FONT = "Helvetica", 16
root = Tk()
class mainFrame:
def __init__(self):
self.pick_random = "..."
#MAIN TITLE OF THE APP
main_title = Label(root, text="Spelling", font=MAIN_FONT)
main_title.pack()
#END OF MAIN TITLE
#START OF IMAGE
self.img = PhotoImage(file=self.pick_another() + ".png")
self.show_image = Label(root, image=self.img)
self.show_image.configure(image=self.img)
self.show_image.image = self.img
self.show_image.pack()
#END OF IMAGE
#START OF ENTRY AND BUTTON INPUTS
self.main_entry = Entry(root)
self.submit_btn = Button(root, text="Submit", command=self.submit)
self.main_entry.pack()
self.submit_btn.pack()
#END OF ENTRY AND BUTTON INPUTS
def submit(self):
if self.main_entry.get() == self.pick_random:
print("RIGHT")
self.pick_another()
else:
print("That's not right, try again")
def pick_another(self):
print("Called")
self.pick_random = random.choice(list(words.keys()))
print(self.pick_random)
root.update_idletasks()
return self.pick_random
app = mainFrame()
root.mainloop()
正如我所说,这样做有点工作,第一张图片会显示,输入正确的图像拼写会生成一个新单词,但图片不会更新。
我花了几天时间研究各种脚本试图让tkinter更新,但事实并非如此。
我将非常感谢您提供的任何帮助