Ich versuche Benutzereingaben von main.py zu nehmen und dann diese Informationen zu verwenden, um eine Ausgabe auf runAnalytics zu erzeugen. Das Problem, auf das ich gestoßen bin, ist, dass die Benutzereingabe manchmal den Wert None (vielleicht null, ich weiß nicht) erzeugt, wenn dividen_yield nicht verfügbar ist und dann mein gesamtes Programm aufhört. Es funktioniert jedoch einwandfrei, wenn es eine Dividendenrendite gibt.Python Tkinter TypeError: 'int' Objekt ist nicht aufrufbar
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()
[Fehler]
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
Danke so sehr, dass einwandfrei funktioniert. Wenn es Ihnen nichts ausmacht, dass ich frage, warum funktioniert das Hinzufügen von .format? Sorgt etwas dabei anders? – Andrew
Auch habe ich es erneut ausgeführt, aber die Klammern "{}" gelöscht und es ausgeführt, aber nichts erschien. Warum werden die Klammern benötigt? Entschuldigung, ich bin nur neugierig. – Andrew
Die Klammern sind Platzhalter für die Variablen, die in die Zeichenfolge eingefügt werden sollen. Sie können diese Platzhalter auch numerieren oder benennen, was wirklich schön ist, wenn Sie mehr als eine einzelne Variable in eine Zeichenkette überführen, und die Dinge könnten etwas unordentlich werden (schauen Sie sich die Dokumentation an). Leider bin ich mir nicht ganz sicher, wie das Format Mini-Sprache unter der Haube funktioniert. Die formale Spezifikation kann jedoch in [PEP 3101] (https://www.python.org/dev/peps/pep-3101/) gefunden werden. – albert