2016-08-07 9 views
0

私はexec()に小さな問題があります。私は実行されたコードから値を実行して格納するために必要なKivy GUIの文字列を持っています。Python 3 - exec()から値を返すことが必要

class gui(BoxLayout): 
    def proces(self): 
     t = threading.Thread(target=self.graf) 
     t.daemon = True 
     t.start() 

    def graph(self): 

     CodeInput=self.ids.codas 
     Code=CodeInput.text 
     x, y = [], [] 
     exec(Code) 
     print(x,y) # empty list prints 
     # then x y will serve for plotting a graph 

これは '規範' の中の文字列です:私は幹部(コード)からyの値xを取得傾ける以外

def values(): 
    x=np.linspace(0,3.14,100) 
    y=np.sin(x) 
    print(x) # of course works 
    return x,y 
x,y=values() 

すべての作品。そのようなexec()は、開始することはできますが入力することはできない、完全に独立した操作です。

答えて

2

ローカル名前空間とexecを呼び出す必要があります:

loc = {} 
exec(Code, {}, loc) 
x = loc['x'] 
y = loc['y'] 
+0

どうもありがとうございました。回答があなたに役立つ場合は – Martin

+2

を働きます、それを受け入れてください – Daniel

関連する問題