微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Blender-使用bpy插入文本按钮

如何解决Blender-使用bpy插入文本按钮

我正在为Blender 2.80插件设计一个简单的GUI。我创建了一个对话框以输入一些数据:

enter image description here

我想用带有自定义标签的按钮(例如“单击此处访问我们的网站”)替换文本行(“ Lorem ipsum ...”)。

下面是我正在使用的代码

class ExportFDSCloudHPC(Operator):

    bl_idname = "..."
    bl_label = "Title"
    bl_description = "..."

    data1 = bpy.props.StringProperty(
        name = "Text 1",default = "..."
    )

    data2 = bpy.props.StringProperty(
        name = "Text 2",default = "..."
    )

    data3 = bpy.props.StringProperty(
        name = "Text 3",default = "..."
    )
    
    def draw(self,context):
        col = self.layout.column(align = True)
        col.prop(self,"data1")

        self.layout.label(text="Lorem ipsum dolor sit amet,consectetur adipisci elit...")

        col = self.layout.column(align = True)
        col.prop(self,"data2")

        col = self.layout.column(align = True)
        col.prop(self,"data3")

    def execute(self,context):
        ...

解决方法

要获取按钮,您需要提供现有的operatorrow.operator("wm.save_as_mainfile")按钮文本是在operator中定义的。如果要更改现有操作员的名称,请使用row.operator("wm.save_as_mainfile",text='My Save Label')

您可以创建自己的运算符:

import bpy

def main(context):
    for ob in context.scene.objects:
        print(ob)

class SimpleOperator(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "object.simple_operator" # <- put this string in layout.operator()
    bl_label = "Simple Object Operator" # <- button name

    @classmethod
    def poll(cls,context):
        return context.active_object is not None

    def execute(self,context):
        main(context)
        return {'FINISHED'}

def register():
    bpy.utils.register_class(SimpleOperator)

def unregister():
    bpy.utils.unregister_class(SimpleOperator)
    
if __name__ == "__main__":
    register()

    # test call
    bpy.ops.object.simple_operator()

然后像这样使用它:

[..]
col.prop(self,"data1")
col.operator("object.simple_operator")
# self.layout.label(text="Lorem ipsum dolor sit amet,consectetur adipisci elit...")

col = self.layout.column(align = True)
[..]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。