Python 3 tkinter Photoimage" pyimage1"不存在

时间:2015-05-29 20:52:41

标签: python-3.x tkinter photoimage

PhotoImage:Tkinter PhotoImage对象及其特质

http://tkinter.unpythonic.net/wiki/PhotoImage

我用32位和64位的python 2.7.9,3.2.5,3.3.5,3.4.3测试了这个例子。 (赢得8.1 64位)

代码有效。 (即使没有枕头)

(在python 3.4.3 64bit中,我首先收到一条错误消息。

我已完全卸载3.4.3然后重新安装。

现在,该示例也适用于3.4.3 64位)

# basic code from >>
# http://tkinter.unpythonic.net/wiki/PhotoImage

# extra code -------------------------------------------------------------------------
from __future__ import print_function

try:
    import tkinter as tk
except:
    import Tkinter as tk

import sys
import platform

print ()
print ('python    ', sys.version)
print ('tkinter   ', tk.TkVersion)
print ()
print (platform.platform(),' ',platform.machine())
print ()


# basic code -------------------------------------------------------------------------

root = tk.Tk()

def create_button_with_scoped_image():
    # "w6.gif" >>
    # http://www.inf-schule.de/content/software/gui/entwicklung_tkinter/bilder/w6.gif
    img = tk.PhotoImage(file="w6.gif")  # reference PhotoImage in local variable
    button = tk.Button(root, image=img)
    # button.img = img  # store a reference to the image as an attribute of the widget
    button.image = img  # store a reference to the image as an attribute of the widget
    button.grid()

create_button_with_scoped_image()

tk.mainloop()

3 个答案:

答案 0 :(得分:1)

这可以通过将root.Tk()替换为root.Toplevel()

来完成。

答案 1 :(得分:0)

我的脚本在Windows 7上运行的Python 3.4版本完全相同。我怀疑唯一的区别是我还通过从this repository下载了wheel包来安装Pillow。我认为这包括您需要的图像支持。

作为旁注:在Windows上使用ttk包小部件来获取实际看起来正确的平台按钮。只需import tkinter.ttk as ttk,然后使用ttk.Button代替tk.Button

<强>更新

鉴于相同的代码正在我的机器上工作,而不是你的,我想我会添加我如何获得这个版本。我使用chocolateychoco install python)安装了python,然后从gohlke站点添加了Pillow,lxml,numpy,requests和simplejson。

检查Tk版本我看到我得到了Tk 8.6.1所以我怀疑你正在购买本地安装的Tcl / Tk安装,而不是随你的Python版本一起提供。尝试确保PATH中没有Tk安装,看看是否能解决问题。我的输出是:

python     3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)]
tkinter    8.6

测试Tk位置:

>>> from tkinter import *
>>> root = Tk()
>>> root.eval('set tk_library')
'C:\\opt\\Python34\\tcl\\tk8.6'

我实际上已经说服python安装到c:\opt\Python我认为使用choco install python -ia "TARGETDIR=c:\opt\Python"但我怀疑这是否相关。

答案 2 :(得分:-1)

您必须关闭挂在内存中的所有打开的窗口。如果你有一个错误并且没有破坏窗口,那么下次你开始没有启动那里有几个窗口。检查!