PyQT / Pyside Opengl小部件覆盖

时间:2018-06-20 19:15:30

标签: python opengl pyqt pyside pyside2

PyQT或Pyside是否支持OpenGL按钮/常规小部件覆盖(我正在寻找与FlashPrint的此屏幕截图类似的东西吗?

enter image description here

我什至在搜索时都遇到了麻烦,因为我不知道该怎么称呼。这里是否覆盖正确的术语?另外,如果PyQT或Pyside都不支持,是否有基于Python的GUI允许这样做?

2 个答案:

答案 0 :(得分:0)

通常混合使用OpenGL渲染和OS渲染(用于按钮或其他控件)不是一个好主意。

一种解决方案是先绘制控件(在内存中更好),然后对其进行“截屏”。然后进行OpenGL渲染。然后将图像传递到OpenGL,并在先前的渲染之上进行渲染。缺点是您失去了所有控制反应,它们变成了图像。

另一种方法可能会更好。首先渲染OpenGL。然后获取该图像(例如glReadPixels)。然后将图像变成背景。然后绘制控件。

答案 1 :(得分:0)

我不知道这是否仍然是一个实际的问题,但无论如何:

如果您使用的是QOpenGLWidget(在较新的Qt版本中建议使用),则可以创建任何现有的布局,就像通常使用QWidget一样,并在其中添加自定义按钮。 (例如)以下示例:enter image description here 如您所见,我在左侧的绿色QWidget顶部添加了一个继承自QOpenGLWidget的自定义且完全交互式的栏。

还值得一提的是,您可以指定 Qt表面格式,以使用特定版本强制使用OpenGl窗口渲染。另外,如果您想在应用程序中使用OpenGL,请添加属性QApplication.setAttribute(Qt.AA_UseDesktopOpenGL)以使用桌面OpenGL。