[python] PySimpleGUI에서 스크롤 및 페이지네이션 구현하기

PySimpleGUI는 사용자 인터페이스(GUI)를 구축하기 위한 간단하고 직관적인 Python 라이브러리입니다. 이 라이브러리를 사용하면 사용자와 상호작용하는 창, 버튼, 텍스트 상자 등을 쉽게 만들 수 있습니다. 이번에는 PySimpleGUI를 사용하여 스크롤 및 페이지네이션을 구현하는 방법을 알아보겠습니다.

스크롤 구현하기

스크롤을 구현하기 위해서는 Scroll 요소를 사용해야 합니다. Scroll 요소는 내용이 길어서 화면에 모두 표시할 수 없을 때 스크롤 기능을 제공합니다.

import PySimpleGUI as sg

# 스크롤을 사용할 요소 생성
layout = [[sg.Input(size=(20, 1))] * 20, [sg.OK()]]
window = sg.Window("Scroll Example", layout)

while True:
    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break

window.close()

위의 코드에서는 layout 변수에 sg.Input 요소를 20개 생성하고, sg.OK() 요소를 추가하여 확인 버튼을 만들었습니다. window 변수에 sg.Window를 사용하여 창을 생성한 후, read() 함수를 이용하여 사용자의 입력을 대기합니다. 창이 닫히면 eventsg.WINDOW_CLOSED로 설정되며, 이때 반복문이 종료됩니다.

페이지네이션 구현하기

페이지네이션은 여러 페이지로 구성된 데이터를 한 번에 보여주지 않고 일부만 보여주고, 나머지는 다음 페이지로 이동하여 보여주는 기능을 말합니다. PySimpleGUI에서 페이지네이션은 Tabs 요소를 사용하여 구현할 수 있습니다.

import PySimpleGUI as sg

pages = [
    [sg.Text("Page 1")],
    [sg.Text("Page 2")],
    [sg.Text("Page 3")],
]

layout = [[sg.TabGroup([[sg.Tab("Tab 1", pages)]]), sg.Exit()]]

window = sg.Window("Pagination Example", layout)

while True:
    event, values = window.read()
    if event in (sg.WINDOW_CLOSED, "Exit"):
        break

window.close()

위의 코드에서는 pages 변수에 다른 페이지의 내용을 나타내는 요소들을 리스트 형태로 저장합니다. Tab 요소를 사용하여 페이지를 구분한 후, TabGroup 요소를 사용하여 여러 개의 탭을 그룹화합니다. 마지막으로 sg.Exit() 요소를 추가하여 종료 버튼을 생성합니다. 사용자가 창을 닫거나 “Exit” 버튼을 클릭하면 반복문이 종료되며 창이 닫힙니다.

이제 PySimpleGUI를 사용하여 스크롤 및 페이지네이션을 구현하는 방법을 알게 되었습니다. 이러한 기능은 사용자에게 더 나은 사용 경험을 제공하고, 긴 내용이나 많은 데이터를 효과적으로 관리할 수 있도록 도와줍니다.

참고 자료