首先,非常Py Newby! 我编写了一个程序来从文件导入数据并使用tkinter将其显示为图像。因此行为不端的循环运行:
for x in xrange(WIDE):
for y in xrange(HIGH):
dataPointLo = inFile.read(1)
dataPointHi = inFile.read(1)
pixelValue = ((ord(dataPointLo) + 256*(ord(dataPointHi)))-31500)
colour = rgb[pixelValue]
#print below makes prog run!
print pixelValue
img.put(colour, to=(x,y))
根据评论的建议,省略打印会使其停止工作,但只要你离开它就会将处理器的一个核心锁定在100%(至少20分钟!)。这种效果在IDLE和命令行(Ubuntu 12.04)中都会发生。当然,打印到IDLE窗口会减慢程序,所以我想删除它!有什么想法吗?
答案 0 :(得分:-1)
听起来你正在运行的过程需要很长时间才能完成,我会建议你认为它停止的原因是因为除非你告诉它,否则在进程繁忙时窗口不会更新。我建议你在代码中添加如下函数,并在进入循环之前调用一次:
def keep_alive(self):
self.update()
self.after(100, self.keep_alive)
这样你就可以添加一个事件来每隔100ms(ish)更新一次窗口到事件循环,这将使程序保持响应。你可以调整适合你的时间,往往会减慢你的循环速度,相隔太远而且程序会觉得迟钝。