2016-08-19 50 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

感谢您的快速响应。我删除了全局并添加了“from main import input1”到runAnalaytics.py。我收到此错误消息,“loadAnalytics = tkinter.Button(loadApplication,text =”Load Analytics“,command = runAnalytics.run) AttributeError:模块'runAnalytics'没有属性'run'” – Andrew

+0

用您的代码更新您的问题 – mic4ael

+4

请勿使用您的代码更新您的问题。问一个新问题。仅仅因为我们修复了一个错误并且暴露了另一个错误并不意味着您可以无限更新相同的问题并且整天继续接收实时调试帮助。这不是StackOverflow的工作原理。 –

相关问题