访问回调函数中的值

时间:2017-03-05 07:55:48

标签: python-2.7 freecad

我是一个自学成才的编程笨蛋,所以请原谅糟糕的编码和普遍的无知。

我使用FreeCAD,它有一个API来访问CAD模型中的一个点。

class mySnapper:
  def __init__(self):
    self.point = None
  def getPoint(self):
    FreeCADGui.Snapper.getPoint(callback=self.clicked)
  def clicked(self,point,extra):
    self.point = point
    print point
s = mySnapper()
s.getPoint()
print "point outside is:",s.point
print "~~~~"

这给了我以下结果:

  

外面的点是:无

     

~~~~

     

Vector(320.0,-3414.0,168.15)

显然,类函数在拾取坐标点之前返回(当点值为"无")时。

当拾取点时,则会打印矢量值,但此时类函数已经返回,因此我无法实际使用它们。

如何在"点击"中访问该值?回调函数?是否可以实例化更新的全局变量?

我希望这是有道理的......

1 个答案:

答案 0 :(得分:0)

尝试轮询直到设置值:

import time
class mySnapper:
    def __init__(self):
    self.point = None
    def getPoint(self):
        FreeCADGui.Snapper.getPoint(callback=self.clicked)
    def clicked(self,point,extra):
        self.point = point

s = mySnapper()
while not s.getPoint():
    time.sleep(0.01) # wait for 10 ms before retrying
print s.getPoint() # now it should print Vector(320.0, -3414.0, 168.15)