我一直试图在一个窗口PyQt5中嵌入blenderplayer但是我收到两个窗口而不是一个窗口PyQt嵌入了blender播放器。 你能帮助我取悦我吗? 这是我的剧本:
import sys
from PyQt5.QtCore import QProcess
from PyQt5.QtGui import QWindow
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QApplication, QPushButton, QFrame
class embedBlender(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setMinimumWidth(800)
self.setMinimumHeight(600)
self.frame = QFrame(self)
layout = QVBoxLayout(self)
layout.addWidget(self.frame)
layout.addWidget(QPushButton('button'))
self.process = QProcess(self)
# -i Window_ID -w Width Height X Y
self.process.start(' '.join(('blenderplayer -i', str(self.frame.winId().__int__()), '-w 400 400 c:\V2.blend')))
if __name__ == "__main__":
app = QApplication(sys.argv)
main = embedBlender()
main.show()
sys.exit(app.exec_())
答案 0 :(得分:0)
你可能知道,搅拌机在一个窗口界面上大量倾斜,这会进入游戏引擎。 blenderplayer的-i
选项设置父窗口ID - 这与播放器用作主显示的包含窗口不同。
如果您按照代码进行操作,您会发现将创建一个新窗口并在X11 it's parent is set to be the windowID上传入。在Windows上,再次创建新窗口并将it's input device设置为父窗口使用的输入。因此,该选项不会达到预期效果。
我认为,如果没有你改变和建立自己的搅拌机副本,搅拌机会做你正在尝试的事情。
只是一个理论,但是搅拌机(不是blenderplayer)有一个--window-borderless
选项 - 您可能能够启动没有窗口边框的搅拌机,位于正确的位置,以便它位于您希望它的区域上方没有任何视觉区别。您可以使用启动脚本启用游戏引擎并开始播放。当然,游戏窗口会落在主窗口后面而不会移动时会出现问题。
另一种方法是完全使用搅拌机,即使用一种布局将游戏放置在您想要的位置,并customise blender's interface创建您想要的周围环境。作为极端的示例,请查看Fluid Designer - 它使用了blender,但已调整UI以使其成为一个独特的应用程序。