我正在研究一个项目,我们的一个规范就是能够用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
欢迎任何帮助!