Python 2.X / Tkinter需要print才能运行

时间:2015-01-31 15:50:53

标签: python tkinter

首先,非常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窗口会减慢程序,所以我想删除它!有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

听起来你正在运行的过程需要很长时间才能完成,我会建议你认为它停止的原因是因为除非你告诉它,否则在进程繁忙时窗口不会更新。我建议你在代码中添加如下函数,并在进入循环之前调用一次:

def keep_alive(self):
    self.update()
    self.after(100, self.keep_alive)

这样你就可以添加一个事件来每隔100ms(ish)更新一次窗口到事件循环,这将使程序保持响应。你可以调整适合你的时间,往往会减慢你的循环速度,相隔太远而且程序会觉得迟钝。