ich stehe gerade vor einem Problem was ich nicht gelöst bekomme:
Ich habe drei Module:
- gui_analyze.py
- gui_plot.py
- keywordanalytics.py
Von der gui_analyze.py übergebe ich Eingaben, die dann mithilfe von einer Funktion in keywordanalytics.py ein Dataframe mithilfe von Pytrends abfragt. Dieses Dataframe übergebe ich dann dem Modul gui_plot.py, welches mir dann in einer weiteren TopLevel Form einen Graphen ausspucken soll.
Ich habe das bereits alles mal versucht ohne Tkinter. Das heißt, dass ich über die keywordanalytics.py den matplot anzeigt habe über
Code: Alles auswählen
plt.show()
Sobald ich jedoch das ausführe sehe ich für einen kurzen Moment das Fenster erscheinen, aber ohne Plot. Das Fenster schließt sich aber sofort wieder.
Jetzt bin ich mir nicht ganz sicher woran es liegt. Eine Fehlermeldung erhalte ich nämlich auch nicht.
Hier die Ausschnitte aus der Syntax:
gui_analyze.py
Code: Alles auswählen
import tkinter as tk
import gui_helpers
import gui_plot
from researchtool import keywordsanalytics
self.btn_image_get_historical = tk.PhotoImage(
file=gui_helpers.assets("btn_get_historical.png"))
btn_get_historical = tk.Button(
self,
image=self.btn_image_get_historical,
borderwidth=0,
highlightthickness=0,
command=lambda: (
gui_plot.GUIPlot(
self,
keywordsanalytics.interest_of_time(
gui_helpers.get_selection(listbox_further_keywords), # Get list of selected listbox Items
clicked.get() # Dropdown selected Item: Timeframe
),
gui_helpers.get_selection(listbox_further_keywords)
)
),
relief="flat"
)
Code: Alles auswählen
from pytrends.request import TrendReq
def interest_of_time(keyword_list, timeframe):
trend = TrendReq()
keywords = keyword_list
trend.build_payload(kw_list=keywords, cat=None, timeframe=timeframe, geo="")
data = trend.interest_over_time()
return data
gui_plot.py
Code: Alles auswählen
import tkinter as tk
import gui_helpers
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg)
class GUIPlot(tk.Toplevel):
def __init__(self, parent, data, keywords):
super().__init__(parent)
self_width = 500
self_height = 500
center_x, center_y = gui_helpers.center_form(self, self_width, self_height)
self.geometry(f"{self_width}x{self_height}+{center_x}+{center_y}")
self.title("Research Tool - Figure")
self.configure(bg="#EEEEEE")
self.plot(data, keywords)
self.resizable(True, True)
def plot(self, data, keywords):
figure = Figure(figsize=(50, 50), dpi=100)
plt = figure.add_subplot(1, 1, 1)
for keyword in keywords:
plt.plot(data.index, data[keyword], label=keyword)
plt.legend()
canvas = FigureCanvasTkAgg(figure, master=self)
canvas.draw()
canvas.get_tk_widget().grid(row=0, column=0)
Das Fenster schließt sich nämlich auch, wenn ich die Funktion
Code: Alles auswählen
self.plot(data, keywords)