该代码当前正在运行,但是看起来很糟糕-可能会在性能方面进行很大的改进。
有什么建议?
def OnClick():
global Selection, touch, set_elsb, set_vreg, set_els, BAR_Items
A = viz.pick(0, viz.WORLD, all=False)
if touch != A: return
for i in BAR_Items:
if not set_els: break
elif BAR_Items[i] == A or SHAPES[i+"_SHP"] == A:
if i in Selection:
Selection.remove(i)
BAR_Items[i].clearActions()
VFrame.SetStatusText(frame, i + " has been deselected")
viz.director( do_chart )
else:
Selection.append(i)
非常感谢你!
最佳答案
还有几行代码,但我认为它更清晰。
def OnClick():
if not set_els: return
# swap this with the line above if viz.pick has side effects that should occur
A = viz.pick(0, viz.WORLD, all=False)
if touch != A: return
keys = (key for key in BAR_Items
if BAR_Items[key] == A or SHAPES[key+"_SHP"] == A)
for key in keys:
if key in Selection:
Selection.remove(key)
BAR_Items[key].clearActions()
VFrame.SetStatusText(frame, key + " has been deselected")
viz.director(do_chart)
else:
Selection.append(key)
整个
global
语句没有用,因为您没有分配给任何一个。呼叫属性和设置键不需要global
关键字。