Blender插件:当我点击外部时,对话框会关闭
创始人
2024-12-22 15:00:14
0

要解决这个问题,您需要向您的对话框类添加一个'MODAL”事件处理程序。这样,当您单击对话框之外的区域时,对话框将保持打开状态。

以下是示例代码:

import bpy

class ExampleDialog(bpy.types.Operator): """Example Dialog Operator""" bl_idname = "object.example_dialog" bl_label = "Example Dialog"

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

def invoke(self, context, event):
    wm = context.window_manager
    return wm.invoke_props_dialog(self, width=400, height=200)

def modal(self, context, event):
    if event.type == 'LEFTMOUSE':
        if context.area.regions[-1].type == 'WINDOW':
            return {'FINISHED'}
    return {'PASS_THROUGH'}

def draw(self, context):
    layout = self.layout
    layout.label(text="Hello World!")

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

def unregister(): bpy.utils.unregister_class(ExampleDialog)

if name == "main": register()

# test call
bpy.ops.object.example_dialog('INVOKE_DEFAULT')

请注意,添加了MODAL事件处理程序后,需要在您的对话框类中添加一个draw()方法和一个execute()方法。示例代码包含这些方法的空实现。

添加此事件处理程序后,当您单击对话框之外的区域时,将调用modal()方法并将事件传递给它。在这个例子中,我们检查事件是否是左键单击,如果是的话,我们检查它是否在窗口区域内,如果是,我们返回{'FINISHED'},表示结束对话框。否则,我们返回{'PASS_THROUGH'},表示将事件传递给后续处理。

相关内容

热门资讯

黑科技辅助挂!(红龙扑克)真是... 黑科技辅助挂!(红龙扑克)真是存在有挂,(红龙扑克)确实存在有挂,AI教程(有挂插件);1、红龙扑克...
黑科技辅助挂!(红龙扑克)辅助... 黑科技辅助挂!(红龙扑克)辅助器工具,(红龙扑克)总是真的是有挂,新2025版(有挂辅助挂);1、红...
黑科技辅助挂!德州之星辅助工具... 黑科技辅助挂!德州之星辅助工具,nzt德州辅助器,专业教程(有挂系统)1、构建自己的德州之星辅助插件...
黑科技辅助挂!(wepOkE)... 黑科技辅助挂!(wepOkE)切实是真的有挂,(wepoke)竟然是真的有挂,揭秘教程(有挂攻略)w...
黑科技辅助挂!wPK透视辅助,... 黑科技辅助挂!wPK透视辅助,wPk透视如何让系统发好牌,辅助教程(有挂黑科技);1、每一步都需要思...
黑科技辅助挂!德州aa扑克透明... 黑科技辅助挂!德州aa扑克透明挂辅助使用教程,(AAPOKER)确实存在有挂,2025新版技巧(有挂...
黑科技辅助挂!(智星德州)确实... 黑科技辅助挂!(智星德州)确实是真的有挂,(智星德州)果然真的是有挂,技巧教程(有挂工具);1)智星...
黑科技辅助挂!wpK透视辅助,... 黑科技辅助挂!wpK透视辅助,(WpK)都是真的是有挂,可靠教程(有挂透明)1、这是跨平台的wpK黑...
黑科技辅助挂!aapoKer透... 黑科技辅助挂!aapoKer透明挂德州辅助工具,(aAPOKER)一直真的有挂,2025新版总结(有...
黑科技辅助挂!(wePoKe)... 黑科技辅助挂!(wePoKe)切实存在有挂,(WEPOke)一贯有挂,微扑克教程(有挂工具);1、这...