Add scrollbar to interface

This commit is contained in:
Emilia Allison 2025-04-09 11:07:06 -04:00
parent f06a6077f9
commit fcd014bad3
Signed by: emilia
GPG Key ID: 05D5D1107E5100A1
1 changed files with 20 additions and 4 deletions

View File

@ -1,4 +1,4 @@
from tkinter import Tk
from tkinter import Tk, VERTICAL, LEFT, RIGHT, Y, BOTH
from tkinter import ttk
from instance import Instance, gen_function_for_instance
@ -7,14 +7,30 @@ from settings import MainSettings, SortType
def start_ui(instances: [Instance], settings):
root = Tk()
frame = ttk.Frame(root, padding=50)
frame.grid()
ttk.Label(frame, text="Available Databases").grid(column=0, row=0)
# Alphanumeric sorting
if MainSettings.Sort == SortType.ALPHA:
instances = list(sorted(instances))
canvas = ttk.Canvas(root)
scrollbar = ttk.Scrollbar(root, orient=VERTICAL, command=canvas.yview)
frame = ttk.Frame(canvas)
frame.bind(
"<Configure>",
lambda e: canvas.configure(
scrollregion=canvas.bbox("all")
)
)
canvas.create_window((0, 0), window=frame, anchor="nw")
canvas.configure(yscrollcommand=scrollbar.set)
canvas.pack(side=LEFT, fill=BOTH, expand=True)
scrollbar.pack(side=RIGHT, fill=Y)
ttk.Label(frame, text="Available Databases").grid(column=0, row=0)
for row, instance in enumerate(instances):
if instance.disable and not MainSettings.ShowAll:
continue