【问题标题】:Displaying an image with the Tkinter library -- "too early to create image"使用 Tkinter 库显示图像——“创建图像太早”
【发布时间】:2013-04-27 23:05:12
【问题描述】:

这是我从 URL 显示图像的代码:

def display_image(image_url):
    # create image
    image = Image.open(StringIO(urllib2.urlopen(image_url).read()))
    image = ImageTk.PhotoImage(image)

    # create display
    root = tk.Tk()
    root.title('captcha')
    root.geometry("%dx%d+%d+%d" % (image.width(), image.height(), 0, 0))

    # draw image
    panel1 = tk.Label(root, image=image)
    panel1.pack(side='top', fill='both', expand='yes')
    panel1.image = image

    # run display
    root.mainloop()

我在控制台上得到以下输出:

Traceback (most recent call last):
  File "vote.py", line 119, in <module>
    display_image(recaptcha.get_image_url(challenge_field))
  File "vote.py", line 89, in display_image
    image = ImageTk.PhotoImage(image)
  File "c:\Python27\lib\site-packages\PIL\ImageTk.py", line 113, in __init__
    self.__photo = apply(Tkinter.PhotoImage, (), kw)
  File "c:\Python27\lib\lib-tk\Tkinter.py", line 3244, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "c:\Python27\lib\lib-tk\Tkinter.py", line 3185, in __init__
    raise RuntimeError, 'Too early to create image'
RuntimeError: Too early to create image
Exception AttributeError: "PhotoImage instance has no attribute '_PhotoImage__poto'" in <bound method PhotoImage.__del__ of <PIL.ImageTk.PhotoImage instance at 0x0000000002EB8148>> ignored

我做错了什么?任何帮助将不胜感激。

【问题讨论】:

    标签: python image tkinter


    【解决方案1】:

    在使用ImageTk 之后,您正在创建Tk 实例。您应该始终先创建根元素,然后再创建其余的小部件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2019-05-31
      • 2014-05-13
      • 2017-08-26
      相关资源
      最近更新 更多