OPENGL用户界面编程
我正在开发一个图形应用程序来显示数据(不是游戏,而是真正的主力应用程序)。它需要跨平台,所以我选择了:
- Python
- openGL(我需要3D,混合,纹理等)
- pyopengl
- wx / pywx-窗口,对话框等
最后一个组件WX提出了这个问题。我可以组装一个外观非常漂亮的应用程序(原型看起来很漂亮),但是当我需要与用户互动以提出问题,获取输入时,我必须使用WX。它使应用程序看起来不一致,无法在具有融合,平滑运动,纹理等功能的全屏3D应用程序顶部使用具有传统对话框和组合的传统UI和文本输入。
有没有人使用OpenGL和python开发GUI?我们可以与我分享我们使用的工具包和/或者技巧吗?我需要连击,文本输入,按钮,单选按钮,选项按钮,树状视图。
虽然有一些工具箱,但是它们或者不完整,或者是旧的,并且没有维护。一个很好的例子是pyUI(http://pyui.sourceforge.net/)看起来很漂亮,但多年没有被使用过。
解决方案
回答
我们可能想看看Clutter,它看起来很酷。我还没有使用过它,但是我打算在即将到来的个人项目中使用它。
回答
这不是答案,更多是恳求:请不要那样做。
重新实现的窗口小部件将缺少用户会错过的所有功能。文本输入框会支持拖放吗?复制粘贴?从右到左的脚本?拖动选择?双击选择?所有这些机制都将遵循我们支持的每个平台的本机约定吗?
使用Wx,小部件可能看起来与应用程序不一致,但是至少它们看起来与操作系统保持一致,这同样重要。更重要的是,他们将按照用户的期望去做。
(编辑)3个帖子,-3分?拧死这个因果报应的人。原始海报:我已经在OpenGL中实现了一组基本的小部件(用于游戏UI),这是工作的无尽噩梦。
回答
尝试Qt而不是wx。
QT是跨平台的,我们可以使用CSS设置样式。它的文档非常丰富,并且具有出色的python绑定。实际上,我使用的是C ++文档,而不是PyQT文档。
回答
Python + Qt + OpenGL
我当然相信可以使用python更快更好地编写任何应用程序。
QT4是跨平台的,非常漂亮,可实现小部件所需的一切(可访问性等),并且...与OpenGL集成。这意味着,我们只需要拥有一个小部件即可,它是我们在代码中渲染的openGL内容的视口。
另一个涵盖3D功能的解决方案将涵盖大多数内容,但在用户界面上没有那么麻烦,是使用python脚本扩展Blender3D。它具有3d功能和渲染功能,我们完全可以使用python编写脚本,而且它可以跨平台使用,与单独使用openGL相比,我们可以使用更高级别的工具进行3D编写。
有明显的缺点,主要是从UI的角度来看,与PyQT相比,但可以做到。
回答
wx和QT在创建与OS外观匹配的应用程序方面都做得非常出色。
也可以直接在openg中自己实现所有小部件,此slashdot帖子列出了一些可用的集合
http://ask.slashdot.org/askslashdot/02/12/24/1813219.shtml?tid=156
fox可能是最发达的,但在所有平台上都像Windows。
回答
在QT的最新版本中,如果我们确实愿意这样做,则可以将小部件绘制到OpenGL上下文中。否则,某些游戏引擎中会使用CEGui。
除非我们希望自己动手,否则自己实施GUI Widgets是在浪费时间,除非我们对最基本的外观和功能感到满意。