사용자 입력을 main.py에서 가져 와서 해당 정보를 사용하여 runAnalytics에서 출력을 생성하려고합니다. 내가 겪고있는 문제는 때로는 사용자 입력이 None (어쩌면 null, 나도 몰라) 값을 생성하고 dividen_yield를 사용할 수 없을 때 전체 프로그램이 멈추는 경우입니다. 그것은 배당 수익률이있을 때 완벽하게 작동합니다.Python Tkinter TypeError : 'int'객체를 호출 할 수 없습니다.
main.py
import runAnalytics
from tkinter import *
import os
import centerWindow
loadApplication = Tk()
loadApplication.title("Stock Analytics")
loadApplication.geometry("1080x720")
label1 = Label(loadApplication, text = "Ticker")
input1 = Entry(loadApplication)
loadAnalytics = Button(loadApplication, text = "Load Analytics", command=lambda: runAnalytics.run(input1))
centerWindow.center(loadApplication)
label1.pack()
input1.pack()
loadAnalytics.pack()
loadApplication.mainloop()
runAnalytics.py
from yahoo_finance import Share
from tkinter import *
import os
import centerWindow
def run(input1):
ticker = Share(input1.get())
loadAnalytics = Tk()
loadAnalytics.title("$" + "ticker" + "Data")
loadAnalytics.geometry("1080x720")
centerWindow.center(loadAnalytics)
ticker.refresh()
if ticker.get_dividend_yield() is None:
ticker.get_dividend_yield == 0
share_price = Label(loadAnalytics, text = "Share Price: " + ticker.get_price()).pack()
prev_open = Label(loadAnalytics, text = "Previous Open: " + ticker.get_open()).pack()
prev_close = Label(loadAnalytics, text = "Previous CLose: " + ticker.get_prev_close()).pack()
dividend_yield = Label(loadAnalytics, text = "Dividend Yield: " + ticker.get_dividend_yield()).pack()
year_low = Label(loadAnalytics, text = "52 Week Low: " + ticker.get_year_low()).pack()
year_high = Label(loadAnalytics, text = "52 Week High: " + ticker.get_year_high()).pack()
volume = Label(loadAnalytics, text = "Volume: " + ticker.get_volume()).pack()
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\DataAnalytics\main.py", line 13, in loadAnalytics = Button(loadApplication, text = "Load Analytics", command=lambda: runAnalytics.run(input1)) File "C:\Users\MyName\Documents\Python Projects\DataAnalytics\runAnalytics.py", line 21, in run dividend_yield = Label(loadAnalytics, text = "Dividend Yield: " + ticker.get_dividend_yield()).pack() TypeError: 'int' object is not callable
가 완벽하게 작동하는, 정말 감사합니다 (
CLose
는Close
해야한다). 내가 묻는 것에 신경 쓰지 않는다면 .format을 추가하는 것이 왜 효과가 있었습니까? 그렇게함으로써 뭔가 다르게 컴파일되고 있습니까? – Andrew또한 다시 실행했지만 대괄호 "{}"을 삭제하고 실행했지만 아무 것도 나타나지 않았습니다. 괄호가 필요한 이유는 무엇입니까? 미안, 나는 단지 호기심이 많다. – Andrew
대괄호는 문자열에 채울 변수에 대한 자리 표시 자입니다. 또한 문자열에 하나 이상의 변수를 전달할 때 물건을 조금 더러워 지거나 (문서를 살펴보십시오) 정말 좋은 자리 표시자를 수치화하거나 이름을 지정할 수 있습니다. 불행히도, 형식 미니 언어가 두포에서 어떻게 작동하는지 완전히 모르겠습니다. 그러나 공식 사양은 [PEP 3101] (https://www.python.org/dev/peps/pep-3101/)에서 찾을 수 있습니다. – albert