When I click a global tkinter button, works only the first time

Viewed 34

There are four buttons that hide or show a canvas. When I clicked the first time it work but then I don't really know it doesn't work. I made the buttons global because I need to reposition them depending on the canvas. How can I fix this? The function show_shares and show_DividendGrowth are the single ones that are used and they are creating some table cells and charts.

from tkinter import ttk
import pygsheets
from tkinter import *
from Shares import show_shares
from DividendGrowth import show_DividendGrowth
from MonthlyDividend import show_MonthlyDividend
from Evolution import showEvolution

client = pygsheets.authorize(service_account_file="dividend-portfolio.json")
sh = client.open('Portfolio')
wk1 = sh.sheet1

window = Tk()
window.title('Dividend Portfolio')
window.attributes('-fullscreen', True)

container = ttk.Frame(window)
container.pack(fill="both", expand=1)

canvas = Canvas(container)

scrollable_frame = ttk.Frame(canvas)
scrollbar_vertical = ttk.Scrollbar(container, orient="vertical", command=canvas.yview)
scrollbar_vertical.pack(side="right", fill="y")
canvas.configure(yscrollcommand=scrollbar_vertical.set)
canvas.bind('<Configure>', lambda e: canvas.configure(scrollregion=canvas.bbox("all")))
canvas.pack(fill=BOTH, expand=1)
canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")

current_page = [0, 0, 0, 0]

shares_canvas = Canvas(scrollable_frame)
dividendGrowth_canvas = Canvas(scrollable_frame)
monthlyDividend_canvas = Canvas(scrollable_frame)
evolution_canvas = Canvas(scrollable_frame)

global shares_button, dividendGrowth_button, monthlyDividend_button, evolution_button

def placeButtons(master):
    global shares_button, dividendGrowth_button, monthlyDividend_button, evolution_button
    shares_button = Button(master, text="Actiuni", borderwidth=2,relief="solid", width=9, height=1, font=("Calibri", 13), bg="dodgerblue", fg="white")
    dividendGrowth_button = Button(master, text="Dividende si cresteri", borderwidth=2, relief="solid", width=16, height=1, font=("Calibri", 13), bg="dodgerblue", fg="white")
    monthlyDividend_button = Button(master, text="Dividende lunare", borderwidth=2, relief="solid", width=14, height=1, font=("Calibri", 13), bg="dodgerblue", fg="white")
    evolution_button = Button(master, text="Evolutie", borderwidth=2,relief="solid", width=9, height=1, font=("Calibri", 13), bg="dodgerblue", fg="white")

def start(current_page):
    if current_page[0] == 0:
        current_page = [1, 0, 0, 0]
        show_shares(shares_canvas)
        shares_canvas.grid()
        dividendGrowth_canvas.grid_forget()
        monthlyDividend_canvas.grid_forget()
        evolution_canvas.grid_forget()
        placeButtons(shares_canvas)
        shares_button.grid(row=102, column=0, columnspan=2, padx=6, pady=4, sticky=W)
        dividendGrowth_button.grid(row=102, column=0, columnspan=3, padx=90, pady=4, sticky=E)
        monthlyDividend_button.grid(row=102, column=1, columnspan=4, padx=47, sticky=W)
        evolution_button.grid(row=102, column=3, columnspan=4, padx=56, sticky=W)

start(current_page)

def showShares(event, current_page):
    start(current_page)

def showDividendGrowth(event, current_page):
    if current_page[1] == 0:
        current_page = [0, 1, 0, 0]
        shares_canvas.grid_forget()
        monthlyDividend_canvas.grid_forget()
        evolution_canvas.grid_forget()
        show_DividendGrowth(dividendGrowth_canvas)
        dividendGrowth_canvas.grid()
        placeButtons(dividendGrowth_canvas)
        shares_button.grid(row=102, column=0, columnspan=2,  padx=6, pady=4, sticky=W)
        dividendGrowth_button.grid(row=102, column=0, columnspan=4, padx=101, pady=4, sticky=W)
       monthlyDividend_button.grid(row=102, column=1, columnspan=5, padx=157, sticky=W)
       evolution_button.grid(row=102, column=3, columnspan=4, padx=53, sticky=W)
       scrollbar_orizontal = ttk.Scrollbar(container, orient="horizontal", command=canvas.xview)
       scrollbar_orizontal.pack(side="bottom", fill="x")
       canvas.configure(xscrollcommand=scrollbar_orizontal.set)

shares_button.bind('<Button-1>', lambda event: show_shares(event))
dividendGrowth_button.bind('<Button-1>', lambda event: showDividendGrowth(event, current_page))

window.mainloop()
0 Answers
Related