Python中的Tkinter OpenGL上下文

Posted

技术标签:

【中文标题】Python中的Tkinter OpenGL上下文【英文标题】:Tkinter OpenGL context in Python 【发布时间】:2012-08-04 09:41:46 【问题描述】:

我需要在 Tkinker 中创建一个 OpenGL 上下文,以便将它与 PyOpenGL Python 模块一起使用。

Tkinker 本身并不支持 OpenGL 上下文,但我在 PyOpenGL 文档上找到了这个页面,解释了如何为此使用模块中包含的包装器: http://pyopengl.sourceforge.net/documentation/context/

我尝试运行提供的代码,但收到一条消息,提示找不到 TOGL 模块。 我从http://togl.sourceforge.net/ 下载了模块,但无法使用。

PS。我使用 virtualenv 在 Mac OS X 上使用 Python 3.2 进行了测试。

【问题讨论】:

TOGL 模块到底有什么问题?你收到错误了吗?如果是这样,请发布回溯。 是的,如果你能详细说明就好了。 只是猜测,但模块似乎已经过时了。也许运行 python 2.7 可以解决您的问题? 很抱歉没有发布代码并回复这么晚。我打算再试一次,但在 PyOpenGL 文档中找不到关于将它与 Tkinter 一起使用的信息(他们只是说它受支持)。我最初粘贴的链接不再有效。无论如何,我想不知道在哪里放置 togl 小部件,所以我可以再试一次,同时使用 Python 2.7 和 3.3。 【参考方案1】:

PyOpenGL 为 Tk OpenGL 小部件 (Togl) 提供 Python 绑定,但不为 Togl 本身提供绑定,这就是您必须下载它的原因。现在,安装 Togl 很容易,但没有准备好执行任务的工具。由于 Python 绑定将使用 Tcl 来加载 Togl 模块,因此小部件需要位于 Tcl 的auto_path 中的一个目录中,这是 Tcl 查找加载库的地方。你可以做的是启动一个 Tcl 解释器,tclsh,然后通过puts $auto_path 来检查这些目录。就我而言,我将目录lib/Togl2.0(在Togl 的.tar.gz 中)复制到/opt/local/lib/tcl8.5。您也可以扩展auto_path 来查找其他目录,但我不在这里介绍。

然后我在 Mac OSX 上使用 Python 2.7 进行了测试。执行import OpenGL.Tk 尝试加载Togl,太糟糕了,它失败了。原因是 Togl 是为 i386 预编译的,因为我将 Python 构建为通用二进制文件,我所做的只是将它作为 arch -i386 python2.7 运行,现在 import OpenGL.Tk 可以工作了。

【讨论】:

以上是关于Python中的Tkinter OpenGL上下文的主要内容,如果未能解决你的问题,请参考以下文章

Python中tkinter包如何提取文本框文字到函数之外?

Python OpenGL-线程中没有有效的上下文

如何更改文本框的大小,以便它可以使用tkinter和python在UI上水平扩展

Python之OpenGL笔记(22):箭头控制平面直角坐标系中的圆圈移动

OpenGL上下文中的逻辑缓冲区是啥?

折腾Python中的Tkinter