完整代碼:
from pyfbsdk import *
from pyfbsdk_additions import *
# 回調函數
def BtnCallback(control,event):
CloseTool(t)
print e1.Value
print e2.Value
print e3.Value
print e.Value
# FBEditVector
def PopulateLayout(mainLyt):
editStyles = ["FBEditVector", "FBEditVector", "FBEditVector", "FBEditVector" ]
global edits
edits = {}
anchor = ""
attachType = FBAttachType.kFBAttachTop
index = 0
for style in editStyles:
# 創建label
labId = "Label{}{}".format(style, index)
l = FBLabel()
l.Caption = style
x = FBAddRegionParam(10,FBAttachType.kFBAttachLeft,"")
y = FBAddRegionParam(10,attachType,anchor)
w = FBAddRegionParam(100,FBAttachType.kFBAttachNone,"")
h = FBAddRegionParam(25,FBAttachType.kFBAttachNone,"")
mainLyt.AddRegion(labId,labId, x, y, w, h)
mainLyt.SetControl(labId,l)
# 創建edit
editId = "Edit{}{}".format(style, index)
initCall = "%s()" % (style)
global e,e1, e2,e3
e = eval( initCall )
edits[style,index] = e
e1 = eval( initCall )
edits[style,index] = e1
x = FBAddRegionParam(10,FBAttachType.kFBAttachRight,labId)
y = FBAddRegionParam(10,attachType,anchor)
w = FBAddRegionParam(200,FBAttachType.kFBAttachNone,"")
h = FBAddRegionParam(25,FBAttachType.kFBAttachNone,"")
mainLyt.AddRegion(editId, editId, x, y, w, h)
mainLyt.SetControl(editId, e)
mainLyt.SetControl(editId, e1)
attachType = FBAttachType.kFBAttachBottom
anchor = labId
index = index + 1
e = edits['FBEditVector',0]
e.Value = FBVector3d(0.0, 0.0, 0.0)
e1 = edits['FBEditVector',1]
e1.Value = FBVector3d(0.0, 0.0, 0.0)
e2 = edits['FBEditVector',2]
e2.Value = FBVector3d(0.0, 0.0, 0.0)
e3 = edits['FBEditVector',3]
e3.Value = FBVector3d(0.0, 0.0, 0.0)
# Button
def PopulateLayout343(mainLyt):
x = FBAddRegionParam(200,FBAttachType.kFBAttachLeft,"") # 左邊距
y = FBAddRegionParam(300,FBAttachType.kFBAttachTop,"") # 上邊距
w = FBAddRegionParam(200,FBAttachType.kFBAttachNone,"")
h = FBAddRegionParam(25,FBAttachType.kFBAttachNone,"") # 自身的高
mainLyt.AddRegion("main","main", x, y, w, h)
lyt = FBHBoxLayout()
mainLyt.SetControl("main",lyt)
b = FBButton()
b.Caption = "But1"
b.Justify = FBTextJustify.kFBTextJustifyLeft
lyt.Add(b,60)
b.OnClick.Add(BtnCallback)
def CreateTool():
# Tool creation will serve as the hub for all other controls
global t
t = FBCreateUniqueTool("Example")
PopulateLayout(t)
PopulateLayout343(t)
ShowTool(t)
CreateTool()
運行效果圖:
輸入完成點擊 Button(OK)
打印的數值:
FBVector3d(1, 1, 1)
FBVector3d(2, 2, 2)
FBVector3d(3, 3, 3)
FBVector3d(4, 4, 4)
若有更好的方法,歡迎指點^^~