2016-08-19 11 views
-2

私はmain.pyからユーザ入力(input1)を取得し、runAnalytics.pyで使用しようとしています。別のスクリプトで変数を使用してNameErrorを避ける

main.py

import runAnalytics 
import tkinter 
import os 
import centerWindow 

global input1 

loadApplication = tkinter.Tk() 
loadApplication.title("Stock Analytics") 
loadApplication.geometry("1080x720") 

label1 = tkinter.Label(loadApplication, text = "Ticker") 
input1 = tkinter.Entry(loadApplication) 

loadAnalytics = tkinter.Button(loadApplication, text = "Load Analytics", command = runAnalytics.run) 

centerWindow.center(loadApplication) 

loadAnalytics.pack() 
label1.pack() 
input1.pack() 

loadApplication.mainloop() 

runAnalytics:次のように私は見てい

from yahoo_finance import Share 
import tkinter 
import os 
import centerWindow 

def run(): 
    ticker = input1 

    loadAnalytics = tkinter.Tk() 
    loadAnalytics.title("$" + ticker + " Data") 
    loadAnalytics.geometry("1080x720") 

    print ("Price per share: " + ticker.get_price()) 

    ticker.refresh() 
    print ("Price per share: " + ticker.get_price()) 

    print("The dividend yield is: " + ticker.get_dividend_yield()) 

    print("The 52 week low is: " + ticker.get_year_low()) 
    print("The 52 week high is: " + ticker.get_year_high()) 
    print("The volume is: " + ticker.get_volume()) 

    print("The previous close was: " + ticker.get_prev_close()) 
    print("The previous open was: " + ticker.get_open()) 

    loadAnalytics.mainloop() 

エラーメッセージが読み取ります。

"Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Users\MyName\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__ 
    return self.func(*args) 
    File "C:\Users\MyName\Documents\Python Projects\MarketData\runAnalytics.py", line 8, in run 
    ticker = input1 
NameError: name 'input1' is not defined 
+3

停止します。新しい問題で同じ質問を更新し続けないでください。代わりに新しい質問をしてください。 –

答えて

2

globalキーワードは、あなたが期待していることを実行していません。関数の中で宣言された変数を参照すると言ってもいいでしょう。あなたの問題を解決するには、変数をインポートする必要があります(ただし、これは良いパターンではありません)。

from main import input1 
+0

迅速な対応をありがとう。私はグローバルを削除し、 "main import input1から" runAnalaytics.pyに追加しました。 "loadAnalytics = tkinter.Button(loadApplication、text =" Load Analytics "、command = runAnalytics.run) – Andrew

+0

AttributeError:モジュール 'runAnalytics' – mic4ael

+4

質問をあなたのコードに更新しないでください。新しい質問をする。ただ1つのエラーを修正して別のエラーを公開しただけで、同じ質問を無期限に更新して、1日中でもライブデバッグのヘルプを受け取ることができます。それはStackOverflowの仕組みではありません。 –

関連する問題