Tkinter交替显示图像和文本

时间:2016-07-27 20:39:50

标签: python tkinter

我在使用Tkinter的python 2.7中有一个flashcards测验游戏。一般的想法是显示一个没有答案的问题,然后添加答案的显示,然后放置一个新问题并删除答案,并重复...有时问题的答案是图像,有时它是文字。我希望能够在显示任何内容,显示图像,不显示任何内容和显示文本之间切换。仅显示图像,或仅显示文本,或文本后的图像正常工作。它显示的图像不适用于我。

以下是我的代码的相关部分(乳胶字符串转换为图像):

self.answer = tk.Label(master, text = '')
self.answer.pack()
# stuff stuff stuff

qtxt = self.last_question['A']
if self.last_question['type'] == 'flash-latex':
    sympy.preview(qtxt, viewer='file', filename='qtemp.jpg', euler=False)
    image = Image.open('qtemp.jpg')
    photo = ImageTk.PhotoImage(image)
    self.answer.image = photo
    self.answer.config(image = photo)
    self.answer.pack()
else:
    self.answer.config(text = qtxt)

master = Tk()。 如果我尝试在图像后显示文本,我得到的错误是:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1486, in __call__
    return self.func(*args)
  File "game.py", line 65, in next_frame
    self.answer.config(image = None, text = qtxt)
  File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1271, in configure
    return self._configure('configure', cnf, kw)
  File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1262, in _configure
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
TclError: image "pyimage1" doesn't exist

以下是我的完整代码:http://pastebin.com/raw/SdS2fRHJ 请注意,在SO上出现类似错误消息的一些问题有多个Tk()次调用,但这不是这种情况。

我正在使用self.label_instance.config(opts)而不是创建新的tk.Label,因为我不希望窗口中的元素四处移动。

P.S。我怀疑某些对图像的引用需要删除,或者过早擦除,但我不确定......

p.p.s。我可以通过从不尝试在图像之后显示文本来解决问题,即通过具有两个用于答案的标签,一个用于图像,一个用于文本,并且在不需要图像时显示空白图像。但是,我很好奇这个问题是否真的可以解决(使用相同的标签来显示图像,然后是文本,然后是图像等),或者如果我的解决方法是干净利落的话。

0 个答案:

没有答案