免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10115 | 回复: 11
打印 上一主题 下一主题

为什么我的wxPython程序只能运行一次 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-05 18:12 |只看该作者 |倒序浏览
在我的embeded python中,调入一个wxPython脚本(只是简单的hello world)。 可是这个脚本第一次运行正确,第二次就把我的整个应用程序crash掉了。
这是这个脚本:


from wxPython.wx import *
class MyApp(wxApp):
    def OnInit(self):
        frame = wxFrame(NULL, -1, "Hello World")
        frame.Show(true)
        self.SetTopWindow(frame)
        return true
app = MyApp(0)
app.MainLoop()


后来换了一个脚本

from wxPython.wx import wxPySimpleApp, wxFrame

app = wxPySimpleApp()
frame = wxFrame(None, -1, "Hello, World!")
frame.Show(1)
app.MainLoop()

这个脚本第二次运行倒是不crash了,它报错:
wx._core.PyNoAppError: The wx.App object must be created first!


有人能指点一下迷津么?

论坛徽章:
0
2 [报告]
发表于 2005-12-05 21:44 |只看该作者
第一个程序我运行了几次都没问题呀。我的环境是xp+python 2.4.2+wxPython 2.6。
第二个我也没有报错。

btw:导入wx模块,目前通用的方式是import wx。这样所有的wx开头的名字都不用了。象wxFrame就改为Frame。这样更方便。

论坛徽章:
0
3 [报告]
发表于 2005-12-05 23:31 |只看该作者
原帖由 limodou 于 2005-12-5 21:44 发表
btw:导入wx模块,目前通用的方式是import wx。这样所有的wx开头的名字都不用了。象wxFrame就改为Frame。 ...


Good tip!

论坛徽章:
0
4 [报告]
发表于 2005-12-06 10:35 |只看该作者

这两个脚本是都应该没问题才对

我不知道你是怎么运行的。我是说这样,打开PythonWin. 然后在里面用execfile的方式来运行这个脚本。第一次没问题, 第二次再执行execfile就会出问题。 当然如果关掉PythonWin,再重新打开,然后运行,当然也没问题

论坛徽章:
0
5 [报告]
发表于 2005-12-06 10:38 |只看该作者
我是在命令行下运行的,运行多次没有问题。运行所有的gui程序,都建议你在命令行下运行。

论坛徽章:
0
6 [报告]
发表于 2005-12-06 11:48 |只看该作者

命令行下也试过了

命令行是指 Python (command line)吧。 我刚刚也试过了,结果一样,真是太奇怪了。

我之所以用PythonWin测试,是因为我的application也是GUI的,我Embedding Python之后,应该和PythonWin有比较高的可比性。

也许等有时间我重装一下Python和wxPytho再试好了,好在现在第一次运行是正常的。

论坛徽章:
0
7 [报告]
发表于 2005-12-06 12:49 |只看该作者
不是。是指dos窗口。

论坛徽章:
0
8 [报告]
发表于 2005-12-07 08:41 |只看该作者
那么用解释器交互方式 使用execfile 执行一个脚本,执行第二次为什么会得到不同的结果呢?

论坛徽章:
0
9 [报告]
发表于 2005-12-07 12:15 |只看该作者
因为两个都有事件循环在里面,可能会有冲突。而在dos下没有这个问题。

论坛徽章:
0
10 [报告]
发表于 2005-12-07 15:02 |只看该作者
第一个execfile我已经把那个hello window窗口关掉了,难道这种情况下,消息循环还不退出么?

那要怎么解决这个问题? 我是要在我嵌入的application里面来运行脚本程序,不能说带GUI的脚本都一律只能运行一次吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP