PIL - Tkinter对我不起作用!我做错了什么

时间:2015-03-02 18:46:04

标签: python tkinter python-imaging-library

首先:

我知道Stackoverflow上有大量关于此主题的示例 建议代码段等等。我阅读了大部分内容,尝试了,但他们并没有为我工作 ..

我的问题:

一旦我启动脚本它就会显示一个完美尺寸的GUI。 但是我期待Image的位置只有空白区域。

我猜:

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

我的问题:

如果垃圾收集不是问题,我应该编辑什么?为什么? 顺便说一句,我使用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()

谢谢!!

1 个答案:

答案 0 :(得分:0)

以下是更正后的正在运行的方法(当它实际调用时,请参阅问题的评论):

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

    self._backgroundCanvas = self._bgimageTk

您不需要_backgroundCanvas属性,只需在构造函数中删除它。