1

当我关闭 tk-window instance 时,以下几行会导致 ipython 崩溃a

import visual, Tkinter
a = Tkinter.Tk()
a.update()
display = visual.display(title = "Hallo")
display.exit = 0
visual.sphere()

如果我先关闭视觉显示,整个终端就会崩溃。我在 kubuntu 8.10 上运行一切。这是一个错误还是我做错了什么?如果这是一个错误:有没有聪明的方法来避免它?

干杯,菲利普

4

1 回答 1

1

您是否尝试过使用-gthread -tk命令行开关启动 ipython?

来自ipython --help

       -gthread、-qthread、-q4thread、-wthread、-pylab

              只能给出其中之一,并且只能作为
              传递给 IPython 的第一个选项(它不会在任何
              其他职位)。它们为 GTK、QT 提供线程支持
              和 WXWidgets 工具包,以及 matplotlib 库。

              使用前四个选项中的任何一个,IPython 开始运行
              图形工具包操作的单独线程,这样
              您可以从内部打开和控制图形元素
              IPython 命令行,无阻塞。四个都提供
              基本相同的功能,分别用于 GTK、QT3、
              QT4 和 WXWidgets(通过它们的 Python 接口)。

              请注意,使用 -wthread,您还可以使用 -wxversion
              请求使用特定版本的 wx 的选项。这个
              要求您安装了“wxversion”Python 模块,
              这是最近的 wxPython 发行版的一部分。

              如果给出 -pylab,IPython 会加载对 mat- 的特殊支持
              plotlib 库(http://matplotlib.sourceforge.net),允许
              其任何后端的交互式使用,如
              用户的 .matplotlibrc 文件。它会自动激活 GTK、QT
              如果选择 matplotlib 后端,则为 IPyhton 或 WX 线程
              需要它。它还将 %run 命令修改为正确
              执行(不阻塞)任何基于 matplotlib 的脚本
              最后调用 show()。

       -tk -g/q/q4/wthread 选项和 -pylab(如果 matplotlib 是
              配置为使用 GTK、QT 或 WX),通常会阻止 Tk
              图形界面。这意味着当 GTK、QT 或 WX
              线程处于活动状态,任何打开 Tk GUI 的尝试都会导致
              一个死窗口,并可能导致 Python 解释器
              碰撞。额外的选项 -tk 可用于解决此问题
              问题。它只能作为第二个选项在任何
              以上(-gthread、-qthread、q4thread、-wthread 或 -pylab)。

              如果给出 -tk,IPython 将尝试协调 Tk 线程
              与 GTK、QT 或 WX。然而,这可能不可靠,并且
              您必须在您的平台和 Python 配置上进行测试
              确定它是否适合您。Debian 用户有
              报告成功,显然是由于 Debian 构建
              所有 Tcl、Tk、Tkinter 和 Python 都支持 pthreads。在下面
              其他 Linux 环境(如 Fedora Core 2/3),此选项
              导致 Python 解释器随机崩溃和锁定。
              在其他操作系统(Mac OSX 和 Windows)下,您需要
              尝试找出答案,因为目前没有用户报告
              可用的。

              不幸的是,IPython 无法在运行时确定-
              -tk 是否可靠工作的时间,所以你需要
              在依靠它进行常规工作之前做一些实验。
于 2009-04-27T10:15:50.277 回答