Create a button
Posted On April 4, 2017
Python scripts are great, they are even better when we can click a button to run them. A small GUI like the image shown (“Do it!” Button) can be very easy to set up.
Thanks to neil3d.com‘s UI Builder Tool, this was valuable in creating a setup script that I could dissect and learn from. His website is a great source of information.
Below I will go over how I learned to set up a Python script that will launch from a button click in MotionBuilder.
'''================================= | Written by Victor DeBaie | | http://www.vicdebaie.com/blog/ | | vic_debaie@hotmail.com | =================================''' from pyfbsdk import * from pyfbsdk_additions import * # VAriable "DoIt" as a Button DoIt = FBButton() # Define what the "DoIt" button does when clicked def BtnCallbackDoIt(control, event): print "do it!" # Start of the tool window lay out def PopulateTool(t): #populate regions here # Layout for the Button # the DoIt button's position on the x x = FBAddRegionParam(15,FBAttachType.kFBAttachNone,"") # the DoIt button's position on the y y = FBAddRegionParam(10,FBAttachType.kFBAttachNone,"") # the DoIt button's width w = FBAddRegionParam(150,FBAttachType.kFBAttachNone,"") # the DoIt button's height h = FBAddRegionParam(65,FBAttachType.kFBAttachNone,"") t.AddRegion("DoIt","DoIt", x, y, w, h) t.SetControl("DoIt", DoIt) DoIt.Visible = True DoIt.ReadOnly = False DoIt.Enabled = True # hover over the button and this msg. will apear DoIt.Hint = "launches what ever script you are testing - NOT FOR PRODUCTION" # the text that will appear on the button DoIt.Caption = "Do it!" DoIt.State = 0 # the button style - read up on this, there are lots of functions to be had DoIt.Style = FBButtonStyle.kFBPushButton # the button's text will be centered DoIt.Justify = FBTextJustify.kFBTextJustifyCenter DoIt.Look = FBButtonLook.kFBLookNormal # this tells the button "when you are clicked go to def BtnCallbackDoIt" DoIt.OnClick.Add(BtnCallbackDoIt) def CreateTool(): # the tool window's name t = FBCreateUniqueTool("Tool") # the tool window's width t.StartSizeX = 200 # the tool window's height t.StartSizeY = 120 PopulateTool(t) ShowTool(t) CreateTool()