Python wx.ProgressDialog+;py2exe导致应用程序崩溃
这段简单的代码运行得非常好:Python wx.ProgressDialog+;py2exe导致应用程序崩溃,python,wxpython,wxwidgets,py2exe,Python,Wxpython,Wxwidgets,Py2exe,这段简单的代码运行得非常好: import wx app = wx.App(0) frame = wx.Frame(None) test = wx.ProgressDialog('Test', 'Test', maximum = 20, parent = frame, style = wx.PD_CAN_ABORT) app.MainLoop() 但是,当使用py2exe将其编译/打包为可执行文件时 from distutils.core import setup import py2exe
import wx
app = wx.App(0)
frame = wx.Frame(None)
test = wx.ProgressDialog('Test', 'Test', maximum = 20, parent = frame, style = wx.PD_CAN_ABORT)
app.MainLoop()
但是,当使用py2exe
将其编译/打包为可执行文件时
from distutils.core import setup
import py2exe
setup(script_args = ['py2exe'], windows=[{'script':'progressdlgprobblem.py'}],
options = {'py2exe': {'compressed':1,'bundle_files': 1}}, zipfile = None)
。。。然后,.exe
文件崩溃
这次事故的原因可能是什么?wx.ProgressDialog
是否需要一些特定的附加元素才能与py2exe
一起使用?
附录1:当我删除
style=wx.PD\u CAN\u ABORT
时,不会再有崩溃。崩溃怎么可能来自风格
?
但是,从.exe
启动时,样式是XP样式:
与从.py
启动时获得的样式不同(不带py2exe):
附录2:当我删除
'bundle_files:1
时,不再发生崩溃。
但我想保持这个捆绑成一个文件只此绑定到单个.exe文件中怎么会导致此崩溃?
附录3:大部分问题都是通过使用wx.Python 3.0.1.0b而不是3.0.0.0(稍后会有更多详细信息)来解决的。在
ProgressDialog
示例中出现问题,并添加了进度和清理,但在其他方面没有改变
# -*- coding: utf-8 -*-
import wx
app = wx.App(0)
frame = wx.Frame(None)
max_count = 8
dlg = wx.ProgressDialog('Test caption', 'Test text', maximum = max_count, parent = frame, style = wx.PD_CAN_ABORT)
keepGoing = True # progress routine from wxPython demo
count = 0
while keepGoing and count < max_count:
count += 1
wx.MilliSleep(125)
wx.Yield()
(keepGoing, skip) = dlg.Update(count, 'progress: {0} %'.format(count * 100.0/max_count))
dlg.Destroy() # proper cleanup otherwise process has to be killed
frame.Destroy()
app.MainLoop()
至少在我的机器上(WinXP 7+wxPython 2.9.5.0),此设置(python setup.py py2exe
)会产生:
- 单个
.EXE
- 冻结时也要更正主题
- 无崩溃,完全可用,使用您喜欢的样式标志
MSCV
运行时)。有关更完整的排除列表,请参阅[wxPython users]https://groups.google.com/forum/#!主题/wxpython用户/vrd-0cpiH1E
该库已经包含了针对这一怪癖的修复程序,并为wx
-应用程序提供实时更新,但您可能喜欢也可能不喜欢它正在设置的不同项目结构
旁注:我无法在wxPython 2.9.5.0上重现您的崩溃(即使没有装配)。在Win8机器上用3.0.0.0冻结时,我在XP上遇到了崩溃,但根据Robin的说法,这应该在3.0.1中解决(请参见https://groups.google.com/forum/#!topic/wxpython users/8OeBfxTC9Xo
)
旁注2:这似乎是wxPython 3.0.0.0(经典)的一个问题。在我的XP机器上,这个示例即使没有冻结也会崩溃。如果升级到,则会再次工作(解冻和py2exe'd)。冻结的单个文件
EXE
在具有正确主题的Windows8、64位和WinXP上运行时没有问题。在ProgressDialog
示例中出现问题,并添加了进度和清理,但在其他方面没有改变
# -*- coding: utf-8 -*-
import wx
app = wx.App(0)
frame = wx.Frame(None)
max_count = 8
dlg = wx.ProgressDialog('Test caption', 'Test text', maximum = max_count, parent = frame, style = wx.PD_CAN_ABORT)
keepGoing = True # progress routine from wxPython demo
count = 0
while keepGoing and count < max_count:
count += 1
wx.MilliSleep(125)
wx.Yield()
(keepGoing, skip) = dlg.Update(count, 'progress: {0} %'.format(count * 100.0/max_count))
dlg.Destroy() # proper cleanup otherwise process has to be killed
frame.Destroy()
app.MainLoop()
至少在我的机器上(WinXP 7+wxPython 2.9.5.0),此设置(python setup.py py2exe
)会产生:
- 单个
.EXE
- 冻结时也要更正主题
- 无崩溃,完全可用,使用您喜欢的样式标志
MSCV
运行时)。有关更完整的排除列表,请参阅[wxPython users]https://groups.google.com/forum/#!主题/wxpython用户/vrd-0cpiH1E
该库已经包含了针对这一怪癖的修复程序,并为wx
-应用程序提供实时更新,但您可能喜欢也可能不喜欢它正在设置的不同项目结构
旁注:我无法在wxPython 2.9.5.0上重现您的崩溃(即使没有装配)。在Win8机器上用3.0.0.0冻结时,我在XP上遇到了崩溃,但根据Robin的说法,这应该在3.0.1中解决(请参见https://groups.google.com/forum/#!topic/wxpython users/8OeBfxTC9Xo
)
旁注2:这似乎是wxPython 3.0.0.0(经典)的一个问题。在我的XP机器上,这个示例即使没有冻结也会崩溃。如果升级到,则会再次工作(解冻和py2exe'd)。冻结的单个文件
EXE
在具有正确主题的Windows8、64位和WinXP上运行时没有问题。在ProgressDialog
示例中出现问题,并添加了进度和清理,但在其他方面没有改变
# -*- coding: utf-8 -*-
import wx
app = wx.App(0)
frame = wx.Frame(None)
max_count = 8
dlg = wx.ProgressDialog('Test caption', 'Test text', maximum = max_count, parent = frame, style = wx.PD_CAN_ABORT)
keepGoing = True # progress routine from wxPython demo
count = 0
while keepGoing and count < max_count:
count += 1
wx.MilliSleep(125)
wx.Yield()
(keepGoing, skip) = dlg.Update(count, 'progress: {0} %'.format(count * 100.0/max_count))
dlg.Destroy() # proper cleanup otherwise process has to be killed
frame.Destroy()
app.MainLoop()
至少在我的机器上(WinXP 7+wxPython 2.9.5.0),此设置(python setup.py py2exe
)会产生:
- 单个
.EXE
- 冻结时也要更正主题
- 无崩溃,完全可用,使用您喜欢的样式标志
MSCV
运行时)。有关更完整的排除列表,请参阅[wxPython users]https://groups.google.com/forum/#!主题/wxpython用户/vrd-0cpiH1E
该库已经包含了针对这一怪癖的修复程序,并为wx
-应用程序提供实时更新,但您可能喜欢也可能不喜欢它正在设置的不同项目结构
旁注:我无法在wxPython 2.9.5.0上重现您的崩溃(即使没有装配)。在Win8机器上用3.0.0.0冻结时,我在XP上遇到了崩溃,但根据Robin的说法,这应该在3.0.1中解决(请参见https://groups.google.com/forum/#!topic/wxpython users/8OeBfxTC9Xo
)
旁注2:这似乎是wxPython 3.0.0.0(经典)的一个问题。在我的XP机器上,这个示例即使没有冻结也会崩溃。如果升级到,则会再次工作(解冻和py2exe'd)。冻结的单个文件
EXE
在具有正确主题的Windows8、64位和WinXP上运行时没有问题。在ProgressDialog
示例中出现问题,并添加了进度和清理,但在其他方面没有改变
# -*- coding: utf-8 -*-
import wx
app = wx.App(0)
frame = wx.Frame(None)
max_count = 8
dlg = wx.ProgressDialog('Test caption', 'Test text', maximum = max_count, parent = frame, style = wx.PD_CAN_ABORT)
keepGoing = True # progress routine from wxPython demo
count = 0
while keepGoing and count < max_count:
count += 1
wx.MilliSleep(125)
wx.Yield()
(keepGoing, skip) = dlg.Update(count, 'progress: {0} %'.format(count * 100.0/max_count))
dlg.Destroy() # proper cleanup otherwise process has to be killed
frame.Destroy()
app.MainLoop()
至少在我的机器上(WinXP 7+wxPython 2.9.5.0),此设置(python setup.py py2exe
)会产生:
- 单个
.EXE
- 冻结时也要更正主题
- 无崩溃,完全可用,使用您喜欢的样式标志