【发布时间】:2015-10-30 23:57:45
【问题描述】:
直到最近,我一直在 Windows (8) 和 Linux (XUbuntu 14.04) 环境中处理和运行的代码在创建 wx ProgressDialog 时开始出现分段错误,但仅在后一个平台上。这个最小的代码示例说明了这个问题:
#!/usr/bin/python
import wx
import time
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, 'test ',
pos=(200, 100), size=(120, 160))
self.Show(True)
but = wx.Button(self, -1,label="Click me!", pos=(10,10), size=(100,100))
but.Bind(wx.EVT_BUTTON, self.click)
def click(self,evt):
progress_dlg = wx.ProgressDialog('Progress', 'Testing...', -1,
style=wx.PD_ELAPSED_TIME)
for i in range(10):
time.sleep(0.5)
progress_dlg.Pulse()
progress_dlg.Destroy()
if __name__ == "__main__":
application = wx.App(False)
window = MyFrame()
application.MainLoop()
这段代码在我的 Windows 机器上运行良好,但在我们的 Linux 服务器上却不行。据推测,突然的变化与最近的一些图书馆更新有关。确切的错误信息是:
分段错误(核心转储)
使用 pdb 运行代码时也会发生同样的情况。
我不确定如何继续识别和解决问题,并欢迎任何建议。提前致谢。
【问题讨论】:
-
不能直接说出问题所在,因为它在这里工作。但我会尝试在基本上每一行放置一个
print('ID')来识别代码导致分段错误的行,我猜是Pulse()函数。并运行python -m trace --trace myscript.py -
谢谢,我会深入研究这些,肯定有一些我还没有尝试过的东西。是的,Pulse() 导致了分段错误。
标签: python linux windows wxpython