Книга: Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода

Всплывающий диалог

Всплывающий диалог

Если этот скрипт запустить, появится всплывающее окно, где вы можете задать некоторые свойства. После того, как вы выйдите из всплывающего окна перемещением мыши наружу, свойства будут выведены одновременно в окно информации и на консоль.

В подразделе "Планировка панели и несколько аргументов" мы использовали одну строку для передачи нескольких аргументов в оператор. Здесь мы используем глобальные переменные для той же цели.


<
#----------------------------------------------------------
# File popup.py
# from API documentation
#----------------------------------------------------------  
import bpy
from bpy.props import *  
theFloat = 9.8765
theBool = False
theString = "Lorem ..."
theEnum = 'one' 
class DialogOperator(bpy.types.Operator):
    bl_idname = "object.dialog_operator"
    bl_label = "Simple Dialog Operator"
    my_float = FloatProperty(name="Some Floating Point",
        min=0.0, max=100.0)
    my_bool = BoolProperty(name="Toggle Option")
    my_string = StringProperty(name="String Value")
    my_enum = EnumProperty(name="Enum value",
        items = [('one', 'eins', 'un'),
                 ('two', 'zwei', 'deux'),
                 ('three', 'drei', 'trois')])  
    def execute(self, context):
    message = "%.3f, %d, '%s' %s" % (self.my_float,
        self.my_bool, self.my_string, self.my_enum)
    self.report({'INFO'}, message)
    print(message)
    return {'FINISHED'}  
    def invoke(self, context, event):
        global theFloat, theBool, theString, theEnum
        self.my_float = theFloat
        self.my_bool = theBool
        self.my_string = theString
        self.my_enum = theEnum
        return context.window_manager.invoke_props_dialog(self)   
bpy.utils.register_class(DialogOperator)  
# Вызов диалогового окна при загрузке
bpy.ops.object.dialog_operator('INVOKE_DEFAULT')  
#
# Панель в районе tools
#
class DialogPanel(bpy.types.Panel):
    bl_label = "Dialog"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI" 
    def draw(self, context):
        global theFloat, theBool, theString, theEnum
        theFloat = 12.345
        theBool = True
        theString = "Code snippets"
        theEnum = 'two'
        self.layout.operator("object.dialog_operator")  
#
# Регистрация bpy.utils.register_module(__name__)

Оглавление книги


Генерация: 1.382. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз