我正在使用Python为Blender添加一个插件,需要用户进行一些确认。 我已经为Windows做了一个工作代码,如下所示:
from ctypes import *
user32 = windll.user32
Answer = user32.MessageBoxW(None, 'some question here', 'title', 4 | 0x40)
if Answer==6:
print('You choose YES')
else:
print('You choose NO')
不幸(显然),它在Linux中不起作用。 我读到使用 Tkinter 可能是一个解决方案,但它尚未安装在Linux上,我更喜欢使用之前不需要安装软件包的解决方案。
有人认为Linux(或跨平台)解决方案?
由于
答案 0 :(得分:1)
blender的默认安装不包括python的整个默认构建。在打包混合器版本以进行分发时,将排除python模块列表(包括tkinter)。您可以找到确切的列表here。您可能对this example中使用的某些窗口管理器方法感兴趣,例如invoke_props_dialog
,但通常情况下,这些方法不会成为您应该去的方式。
有两种常见的方法可以从用户那里获取变量输入。第一个属性可由用户根据自己的选择进行调整,然后在运行脚本时使用。另一种方法是通过运营商属性。
属性可be added到某些现有类,并显示在panels中供用户编辑。
在搅拌机中执行的操作(例如,当用户按下某些键,单击按钮或选择菜单项时)由操作员执行。操作员通常具有改变其动作结果的属性。例如,当您添加UV球体并按 F6 时,您可以调整球体的几何形状以及它的大小和位置。这些属性也可以在toolshelf区域的底部找到。
如this example所示,您可以向操作员的类添加属性,用户可以调整这些属性,就像在UV Sphere示例中一样。您还可以指定在为用户单击按钮时使用的值 -
def draw(self, context):
row = self.layout.row()
row.operator('object.example_operator', text='go with 6').choice = 6