Say I want yo have a float property in the 3DView Toolbar (T), and make it update in realtime several properties in the selected object without using drivers. For example, the "scale" of an object, its an array of 3 values, but I don't want the UI to display its three values, because I want to use only one float slider to drive the three at once (with the intention to preserve the proportion). Even more, think that this could be very useful if I want to drive any kind of values together with just a single slider, not only the scale's array. I spent several days investigating and trying to achieve that, but I finally understood that Panels and Operators are instances of well defined classes which draw functions remain separated, and I can't just make a call from a Panel to a property defined inside an Operator (I use the operator because I want it to update the object in realtime).
Here's a very simple example, just to illustrate the point (I didn't include an Operator here). Note that the script only changes the object's size when the script is rerun.
import bpy bpy.types.WindowManager.float = bpy.props.FloatProperty(name="Object's Scale", default=1.0) class OBPanel(bpy.types.Panel): bl_label = "Selected Object" bl_idname = "selected_object" bl_space_type = 'VIEW_3D' bl_region_type = 'TOOLS' bl_category = "Tools" bl_context = "objectmode" def draw(self, context): wm = context.window_manager layout = self.layout layout.row().prop(wm, 'float') wm = bpy.context.window_manager bpy.context.object.scale = wm.float, wm.float, wm.float def register(): bpy.utils.register_module(__name__) def unregister(): bpy.utils.unregister_module(__name__) if __name__ == "__main__": register()