python2.X/Tkinter需要打印才能运行

2024-09-28 19:29:40 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我是个新手! 我已经编写了一个程序从一个文件中导入数据,并使用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和命令行中都会出现(ubuntu12.04)。当然,打印到空闲窗口会减慢程序的速度,所以我想删除它!有什么想法吗


Tags: 文件数据in程序forreadinfileprint
1条回答
网友
1楼 · 发布于 2024-09-28 19:29:40

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

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

这样,您就可以在事件循环中添加一个事件,每100ms(ish)更新一次窗口,这将使程序保持响应。你可以调整时间,以适合你,太经常会减慢你的循环,太远的距离和程序会感到迟缓

相关问题 更多 >