diff --git a/src/interface.py b/src/interface.py index 2eb57aa..f17def1 100644 --- a/src/interface.py +++ b/src/interface.py @@ -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( + "", + 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