【发布时间】:2016-12-27 02:06:44
【问题描述】:
我正在尝试从 main.py 获取用户输入,然后根据所述用户输入调整输出。我不仅收到此错误,而且似乎我的 runAnalytics 在我启动 main.py 时正在运行,而不是在我点击按钮命令时运行。
main.py
import runAnalytics
import tkinter
import os
import centerWindow
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(input1))
centerWindow.center(loadApplication)
loadAnalytics.pack()
label1.pack()
input1.pack()
loadApplication.mainloop()
runAnalytics.py
from yahoo_finance import Share
import tkinter
import os
import centerWindow
def run(input1):
ticker = Share(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()
错误信息:
Traceback(最近一次调用最后一次): 文件“C:\Users\MyName\Documents\Python Projects\MarketData\main.py”,第 13 行,在 loadAnalytics = tkinter.Button(loadApplication, text = "Load Analytics", command = runAnalytics.run(input1)) 运行中的文件“C:\Users\MyName\Documents\Python Projects\MarketData\runAnalytics.py”,第 12 行 print ("每股价格:" +ticker.get_price()) AttributeError: 'str' 对象没有属性 'get_price'
【问题讨论】:
-
确实很奇怪。可以在前面插入
print(type(ticker))并分享结果吗? -
你的问题在于 Share 没有像你期望的那样返回一个对象,而是一个字符串。这就是python找不到“get_price”属性的原因。
-
这里引用的
def run(input1):的源代码真的和你运行的一模一样吗?看起来Share对象是str,但考虑到yahoo_financeAPI,这种情况永远不会发生。 -
是的,我在这里发布的所有内容都是我正在运行的内容。
-
我注释掉了所有干扰并添加了“print(type(ticker))”。我收到了这个输出:
@Jean-FrançoisFabre
标签: python string tkinter python-3.5 attributeerror