【问题标题】:PIL - Tkinter doesn't work for me! What I'm doing wrongPIL - Tkinter 不适合我!我做错了什么
【发布时间】:2015-03-02 18:46:04
【问题描述】:

首先:

我知道 Stackoverflow 上有大量关于此主题的示例 建议代码 sn-ps 等等。我阅读了其中的大部分内容并尝试了它们但它们对我没有用..

我的问题:

一旦我启动脚本,它就会向我显示一个完美大小的 GUI。 但是我期望图像的地方只有空白。

我的猜测:

我认为我没有正确使用垃圾回收。这是真的? 如果是,我应该改变什么?

我的问题:

如果垃圾回收不是问题,我应该编辑什么?为什么? 顺便说一句,我使用的是 OS X Yosemite 和 python 2.6。

我的代码:

import Image as Im, ImageTk
from Tkinter import *

class Simulator:

    def __init__(self):
        # Init root
        self.root = Tk()
        self.root.geometry("1171x900")
        self.root.title("Cockpit Simulation")

        # Anti Garbage Collection
        self._antiGarb = None

    def backgroundImage(self):
        # Loading Image
        self._bgimage = Im.open("Image/mask.png")
        self._bgimageTk = ImageTk.PhotoImage(self._bgimage)


        # Anti Garbage Collection
        self._antiGarb.background = self._bgimageTk


        # Background Canvas Widget
        self._backgroundCanvas = Canvas(self.root, width = 1170, height = 780)
        self._backgroundCanvas.pack()
        self._backgroundCanvas.create_image(0,0, image = self._bgimageTk, anchor = NW)


# Mainloop
main = Simulator()
main.root.mainloop()

谢谢!!

【问题讨论】:

  • 您是否遇到任何错误?
  • Err... 我没看到你打电话给backgroundImage()
  • 进程以退出代码 1 结束,因为我刚刚关闭 IDLE
  • 真可惜。好。我现在打电话了。现在我收到错误:第 17 行,在 backgroundImage self._bgimage = Im.open("Image/mask.png") File "/Library/Python/2.6/site-packages/PIL/Image.py",第 1952 行,在open fp = builtin.open(fp, "rb") IOError: [Errno 2] No such file or directory: 'Image/mask.png'
  • 嗯,那你需要检查一下你的图片路径。

标签: python tkinter python-imaging-library


【解决方案1】:

这是正确的运行方法(实际调用时,请参阅问题的 cmets):

def backgroundImage(self):
    # Loading Image
    self._bgimage = Im.open("...")
    self._bgimageTk = ImageTk.PhotoImage(self._bgimage)

    self._backgroundCanvas = self._bgimageTk

您不需要_backgroundCanvas 属性,只需在构造函数中将其删除即可。

【讨论】:

  • 我完全按照您上面写的进行了尝试(只是用我的 正确 路径更改了 open("...")。它没有显示图片
  • 但我发现:如果我只使用:self._bgimageTk = ImageTk.PhotoImage(file = "Images/cockpit.gif") 它工作正常。我知道这次是 gif。我刚刚转换并保存了它。也许我的 PIL Im.open() 坏了?
  • self._bgimage = Im.open("Image/cockpit.gif") self._bgimageTk = ImageTk.PhotoImage(self._bgimage)
猜你喜欢
  • 1970-01-01
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 2023-03-24
  • 2017-09-29
  • 2021-04-14
相关资源
最近更新 更多