Ich habe ein Problem mit scrollbars in einem tkinter canvas.
Unzwar lasse ich mir Einträge aus einem pandas Dataframe in eben diesem Canvas anzeigen.
Das Problem ist das dies zu viele Einträge sind und sie deshalb nicht alle angezeigt werden.
Nun wollte ich 'einfach' eine scrollbar hinzufügen (warum erkennt tkinter das eigentlich nicht von selbst?)
Jedenfalls probiere ich nun seit gestern rum und versuche erfolglos diese Scrollbar zum laufen zu bekommen.
zunächst mal der Code:
Code: Alles auswählen
def create_user_view_entrys(self, parent, controller, user_view_canvas, lbl_PortfolioOverview):
self.lbl_PortfolioOverview.destroy()
df = pd.read_csv('potential_portfolio.csv')
df.drop(columns=['Unnamed: 0'], inplace=True)
df_user_view_entrys = pd.DataFrame(df)
rows = len(df_user_view_entrys)
# self.scrollable_canvas = tk.Canvas(self.user_view_canvas, bg='grey')
# self.scrollable_canvas.grid_columnconfigure((0,1,2,3,4,5), weight=1)
# self.scrollable_canvas.grid_rowconfigure((rows), weight=0)
# self.scrollable_canvas.grid(column=0, row=1, columnspan=5, rowspan=3, padx=10, pady=10, sticky='NESW')
self.entry_canvas = tk.Canvas(self.user_view_canvas, bg='green')
self.entry_canvas.grid_columnconfigure((0,1,2,3,4,5), weight=1)
self.entry_canvas.grid_rowconfigure((rows), weight=1)
self.entry_canvas.grid(column=0, row=1, columnspan=6, rowspan=3, padx=10, pady=10, sticky='NESW')
self.entry_canvas_scrollbar = ttk.Scrollbar(self.entry_canvas, orient='vertical', command=self.entry_canvas.yview)
self.entry_canvas_scrollbar.grid(column=6, row=0, sticky='ns')
self.entry_canvas.configure(yscrollcommand=self.entry_canvas_scrollbar.set)
try:
for i, row in df_user_view_entrys.iterrows():
check_button_value = tk.BooleanVar()
check_button_value.set(True)
# print(f'Index: {i}')
# print(f'{row}\n')
self.entry_label_canvas = tk.Label(self.entry_canvas, bg='blue')
self.entry_label_canvas.grid_columnconfigure((0,1,2,3,4,5,6), weight=1)
self.entry_label_canvas.grid_rowconfigure((0,1), weight=0)
self.entry_label_canvas.grid(column=0, row=i, columnspan=6, padx=2, pady=2, sticky='NESW')
self.checkbutton = tk.Checkbutton(self.entry_label_canvas, variable=check_button_value)
self.checkbutton.grid(column=0, row=1, padx=2, pady=2)
self.entry_label = tk.Label(self.entry_label_canvas, text=row.to_frame().T)
self.entry_label.grid(column=1, row=1, columnspan=4, padx=2, pady=2, sticky='NESW')
self.show_info_button = ttk.Button(self.entry_label_canvas, text='Mehr Infos')
self.show_info_button.grid(column=5, row=1, columnspan=2, padx=2, pady=2, sticky='NESW')
except Exception:
LOG.exception("doesn't work ...")
hier mal der link zum screenshot auf google drive
https://drive.google.com/file/d/13i251s ... sp=sharing
hoffe das klappt, hat mit dem Bild in den img Tags glaube ich nicht funktioniert.
vielleicht kann mir ja jemand sagen was ich da schon wieder falsch mache.