wxpython在任务栏中的触摸图标崩溃

时间:2014-01-20 03:24:19

标签: wxpython

除非我触摸底部栏上的图标(如果已隐藏),否则一切正常。

在使用 urllib2

进行下载的过程中发生
self.appendText(self.stateText, self.actualState, True)
            u = urllib2.urlopen(f['url'])
            meta = u.info()
            file_size = int(meta.getheaders("Content-Length")[0])
            newFileName = self.selectedDir + f['name'].encode('ascii') + " - " + f['date'].encode('ascii') + ".mp3"
            fil = open(newFileName, "wb")
            aclen = 0
            while True:
                b = u.read(8192)
                if not b:
                    break
                fil.write(b)
                aclen = aclen + 8192
                self.statusbar.SetStatusText(str(aclen / 1024) + "/" + str(file_size / 1024) + " - " +  str(self.percentage(aclen,file_size)) + "%")
            fil.close()

我不明白可能发生的事情,但也许事件有错误?崩溃只发生在这部分代码中。似乎没有“处理”此事件的可能性。

应用程序的屏幕截图:enter image description here

1 个答案:

答案 0 :(得分:1)

你问“可能发生了什么?”。似乎正在发生的事情是你的wx应用程序陷入循环或睡眠状态,因此没有呈现任何内容,并且似乎没有响应。

知道为什么你认为它卡在你发布的代码中会很有趣。知道它是如何工作的也很有趣......在while循环期间似乎没有任何意义,你可以通过wx来渲染更新。因此,我不清楚如何呈现状态更新。

我只想说:如果你的代码挂在read(8192)上,或者在无限循环中,它会使它看起来像你的截图:没有响应。

为了避免反应迟钝,你需要在花费很长时间做某事时屈服于wx。

一种简单的调试方法是使用打印来检测代码,以确定它被卡住的位置。至少,在urlopen / u.info活动之前和之后放置一个打印,并在while循环中放置至少一个。