在TKinter中加载图像时获取“malloc():内存损坏”

时间:2018-01-31 09:30:21

标签: python tkinter pgm

我正在研究一个项目,我们的一个规范就是能够用TKinter显示PGM图像。 好吧,出于某种原因,在将图像切换特定次数后,我们的应用程序总是以分段错误结束......

出于调试目的,我做了一个非常简单的TKinter程序,它列出了目录中的所有图像,并允许用户使用滑块切换显示的图像。 这个程序有同样的问题:在每26个图像之后,我得到一个带有“malloc():内存损坏”的分段问题。

这是我的调试代码:

#!/usr/bin/python3

from tkinter import *
import os

class MainFrame():

  def __init__(self, main):
    self.input_canvas = Canvas(main, width=640, height=480)
    self.input_canvas.grid(column=1, row=1)

    self.token = False

    self.files = os.listdir('.')
    self.files.sort()

    self.scale = Scale(main, orient='horizontal', from_=0, to=len(self.files), resolution=1,
            tickinterval=1/len(self.files), length=600, command=self.load_image)
    self.scale.grid(column=1, row=2)

    self.load_image("0")


  def load_image(self, scale_value):
    # The token is only here to make sure load_image is not called multiple times at the same time
    if not self.token:
      self.token = True
    else:
      return

    input_pic = PhotoImage(file=self.files[int(scale_value)])

    self.input_canvas.create_image(0, 0, anchor=NW, image=input_pic)
    self.input_canvas.image = input_pic

    self.token = False


if __name__ == '__main__':
  root = Tk()
  MainFrame(root)
  root.mainloop()

我想我遇到了TKinter的一个错误,但是我没有找到任何关于它的信息,所以也许我做错了,我看不到:/

另外,我想将PIL与ImageTk模块一起使用,但由于某种原因它无法打开我们的测试图像(它们是空白的)。

这是一个包含一些测试图像的存档(那些是16位PGM): https://mega.nz/#!CkxwzaZK!2d0vf4ORHh9H9LqWeKpfaZDTPrsmM89lYntrlO44AOE

欢迎任何帮助!

0 个答案:

没有答案