使用.update_idletasks()更新tkinter标签图像

时间:2016-02-29 16:52:10

标签: python tkinter

我遇到的问题是我的图片标签不会更新。我已经使用了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更新,但事实并非如此。

我将非常感谢您提供的任何帮助

0 个答案:

没有答案