Python Forum
[Tkinter] Scrollable buttons with an add/delete button
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tkinter] Scrollable buttons with an add/delete button
#5
My attempt. Much room for improvements though. The scrollbar doesn't seem to want to work as intended.(The area between arrows should shrink with more data introduced but, doesn't). There does not appear to be any bounds on the scrolling buttons.
The scroll should stop at the button 0 and ending button but doesn't.

import tkinter as tk

class MyCanvas(tk.Canvas):
    def __init__(self, parent, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.columnconfigure(0, weight=1)
        self.rowconfigure(0, weight=1)

        self.container = tk.Frame(parent)
        self.container.grid(column=0, row=0, sticky='news')
        self.container.grid_columnconfigure(0, weight=3)

        self.canvas = tk.Canvas(self.container, bg='ivory')
        self.scrollbar = tk.Scrollbar(self.container, orient='vertical')

        self.canvas['yscrollcommand'] = self.scrollbar.set
        self.canvas['scrollregion'] = self.canvas.bbox('all')
        self.scrollbar['command'] = self.canvas.yview

        self.scrollbar.grid(column=1, row=0, sticky='ns')
        self.canvas.grid(column=0, row=0, sticky='news')

        self.frame = tk.Frame(self.canvas, bg='ivory')
        self.frame.grid(column=0, row=0, sticky='news')

        self.canvas.create_window(50, 10, window=self.frame, anchor='n')



class MyButton(tk.Button):
    def __init__(self, parent, text, col, row, command=None, *args, **kwargs):
        self.parent = parent
        super().__init__(*args, **kwargs)
        self.button = tk.Button(parent)
        self.button['text'] = text
        self.button['command'] = command
        self.button.grid(column=col, row=row, sticky='new', pady=4, padx=2)


root = tk.Tk()
root.geometry('+250+250')
canvas = MyCanvas(root)
col = 0
row = 0
for i in range(100):
    MyButton(canvas.frame, f'Button {i}', col, row)
    if col >= 4:
        row += 1
        col = 0
    else:
        col += 1
root.mainloop()
I welcome all feedback.
The only dumb question, is one that doesn't get asked.
My Github
How to post code using bbtags


Reply


Messages In This Thread
RE: Scrollable buttons with an add/delete button - by menator01 - Jun-16-2022, 06:50 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  [PyQt] PyQt5 drawing on scrollable area HeinKurz 3 1,374 Mar-28-2023, 12:58 PM
Last Post: Axel_Erfurt
  [Tkinter] How to create scrollable frame mandiatutti 7 4,540 Aug-07-2021, 03:34 PM
Last Post: deanhystad
Question [Tkinter] Scrollable Treeview: change behavior of Prior/Next keys? RockDoctor 2 3,250 Apr-10-2021, 05:40 PM
Last Post: RockDoctor
  Scrollable big image in a window (TKinter) Prospekteur 3 4,543 Sep-14-2020, 03:06 AM
Last Post: Larz60+
  [Tkinter] Command button, then more command buttons Heyjoe 4 2,951 Aug-08-2020, 11:28 AM
Last Post: Yoriz
  [PySimpleGui] How to alter mouse click button of a standard submit button? skyerosebud 3 5,067 Jul-21-2019, 06:02 PM
Last Post: FullOfHelp
  [Tkinter] Fixate graphs on scrollable canvas janema 6 5,462 Apr-12-2019, 03:57 PM
Last Post: Larz60+
  [Tkinter] How to get & delete details from each input by clicking a button Vicolas 6 3,891 Feb-01-2019, 11:00 AM
Last Post: Vicolas
  Buttons not appearing, first time button making admiral_hawk 5 3,434 Dec-31-2018, 03:26 AM
Last Post: admiral_hawk
  [Tkinter] ListBox not contained or scrollable kellykimble 6 5,217 Apr-05-2018, 11:59 AM
Last Post: Larz60+

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020