该代码当前正在运行,但是看起来很糟糕-可能会在性能方面进行很大的改进。

有什么建议?

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关键字。

10-06 05:22
查看更多