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'},表示将事件传递给后续处理。

相关内容

热门资讯

玩家科普透视器工具!嘻嘻红中麻... 玩家科普透视器工具!嘻嘻红中麻将多功能透视器工具,嘻嘻红中麻将真是是有透视器工具1、嘻嘻红中麻将辅助...
一分钟教你作弊器技巧!欢乐茶馆... 一分钟教你作弊器技巧!欢乐茶馆多功能作弊器技巧,欢乐茶馆原来是真的有作弊器技巧1、起透看视 欢乐茶馆...
玩家必备科技辅助器技巧!响水麻... 玩家必备科技辅助器技巧!响水麻将多功能辅助器技巧,响水麻将总是真的是有辅助器技巧1、许多玩家不知道响...
热点推荐作弊器工具!嘻嘻红中麻... 热点推荐作弊器工具!嘻嘻红中麻将多功能作弊器工具,嘻嘻红中麻将确实是真的有作弊器工具1、玩家可以在嘻...
重大通报辅助器软件!大宝麻将多... 重大通报辅助器软件!大宝麻将多功能辅助器软件,大宝麻将总是存在有辅助器软件1、不需要AI权限,帮助你...
玩家必看教程辅助软件!廉江麻将... 玩家必看教程辅助软件!廉江麻将多功能辅助软件,廉江麻将总是存在有辅助软件1、廉江麻将有没有辅助教程、...
2分钟细说外挂app!老友汇多... 2分钟细说外挂app!老友汇多功能外挂app,老友汇都是有外挂app1)老友汇辅助插件:进一步探索老...
终于知道外挂工具!嵘聚多功能外... 终于知道外挂工具!嵘聚多功能外挂工具,嵘聚总是有外挂工具1、嵘聚辅助软件下载优化,嵘聚底牌透视脚本科...
教学盘点作弊器教程!海迅麻将多... 教学盘点作弊器教程!海迅麻将多功能作弊器教程,海迅麻将真是存在有作弊器教程1、海迅麻将免费脚本咨询教...
大神推荐辅助器方法!王钓麻将多... 大神推荐辅助器方法!王钓麻将多功能辅助器方法,王钓麻将一直存在有辅助器方法1、超多福利:超高返利,海...