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

标签 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(或跨平台)解决方案吗?

谢谢

最佳答案

blender 的默认安装不包括 python 的整个默认构建。打包 blender 版本以供分发时,排除了 python 模块列表(包括 tkinter)。您可以找到确切的列表 here .您可能对一些可用的窗口管理器方法感兴趣,例如 this example 中使用的 invoke_props_dialog ,但总的来说,这些并不是您应该采用的方式。

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

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

Blender 中执行的操作(例如当用户按下某些键、单击按钮或选择菜单项时)由运算符(operator)执行。运算符通常具有可改变其操作结果的属性。例如,当您添加一个 UV 球体并按 F6 时,您可以调整该球体的几何体量以及它的大小和位置。这些属性也位于工具架区域的底部。

uvsphere options

如图this example ,您可以将属性添加到运算符的类中,并且用户可以像在 UV 球体示例中一样调整这些属性。您还可以指定在放置按钮供用户单击时使用的值 -

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

关于python - Linux 中的消息框(开箱即用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37249277/

相关文章:

python - 属性错误 : module 'torch' has no attribute 'rfft' with PyTorch

python - 在 Pandas Python 中基于列文本创建列

C/Linux - 服务器 <-> 与命名管道的终端通信

linux - 使用 PV 计算行数并显示总行数而不是管道中的总字节数

python - 用于说明温度的色标,Python 脚本

python - 在 PyMySQL 中回滚多个查询

python - CV2 : Unwanted cropping after dewarping (initUndistortRectifyMap)

java - 在 Ubuntu-Linux 上获取 Java 中给定端口的进程名称?

unity-game-engine - Blender 2.8 模型 Material 在导入到 unity 时显示为半透明

python - 如何使用 Python 在 Blender 2.6 中设置事件相机后重新渲染场景