Linux中的消息框(开箱即用)

时间:2016-05-16 08:03:35

标签: python linux blender messagebox

我正在使用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(或跨平台)解决方案?

由于

1 个答案:

答案 0 :(得分:1)

blender的默认安装不包括python的整个默认构建。在打包混合器版本以进行分发时,将排除python模块列表(包括tkinter)。您可以找到确切的列表here。您可能对this example中使用的某些窗口管理器方法感兴趣,例如invoke_props_dialog,但通常情况下,这些方法不会成为您应该去的方式。

有两种常见的方法可以从用户那里获取变量输入。第一个属性可由用户根据自己的选择进行调整,然后在运行脚本时使用。另一种方法是通过运营商属性。

属性可be added到某些现有类,并显示在panels中供用户编辑。

在搅拌机中执行的操作(例如,当用户按下某些键,单击按钮或选择菜单项时)由操作员执行。操作员通常具有改变其动作结果的属性。例如,当您添加UV球体并按 F6 时,您可以调整球体的几何形状以及它的大小和位置。这些属性也可以在toolshelf区域的底部找到。

uvsphere options

this example所示,您可以向操作员的类添加属性,用户可以调整这些属性,就像在UV Sphere示例中一样。您还可以指定在为用户单击按钮时使用的值 -

def draw(self, context):
    row = self.layout.row()
    row.operator('object.example_operator', text='go with 6').choice = 6