[python] 파이썬으로 사용자 인터페이스의 스크롤과 페이징 처리하기

사용자 인터페이스(UI)에서 목록이나 데이터를 화면에 표시할 때, 스크롤과 페이징은 중요한 기능입니다. 파이썬의 Tkinter이나 PyQt와 같은 라이브러리를 사용하여 UI를 개발할 때, 스크롤과 페이징을 다루는 방법에 대해 알아봅시다.

1. 스크롤 처리하기

UI에서 스크롤은 사용자가 많은 데이터나 목록을 탐색할 수 있게 해줍니다. Tkinter에서 스크롤바를 추가하는 방법은 다음과 같습니다.

from tkinter import *

root = Tk()
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)

listbox = Listbox(root, yscrollcommand=scrollbar.set)
for i in range(100):
    listbox.insert(END, str(i))
listbox.pack(side=LEFT, fill=BOTH)

scrollbar.config(command=listbox.yview)

root.mainloop()

2. 페이징 처리하기

데이터가 많은 경우, 한 번에 모든 데이터를 표시하는 것은 UI의 성능과 사용자 경험에 부정적인 영향을 미칠 수 있습니다. PyQt를 사용하여 페이지를 나눠 표시하는 방법은 다음과 같습니다.

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.items = list(range(100))
        self.page_size = 10
        self.current_page = 0
        
        self.list_widget = QListWidget(self)
        self.button_prev = QPushButton("이전", self)
        self.button_next = QPushButton("다음", self)

        self.layout = QVBoxLayout()
        self.layout.addWidget(self.list_widget)
        self.layout.addWidget(self.button_prev)
        self.layout.addWidget(self.button_next)
        self.setLayout(self.layout)

        self.update_list()

        self.button_prev.clicked.connect(self.prev_page)
        self.button_next.clicked.connect(self.next_page)

    def update_list(self):
        self.list_widget.clear()
        for item in self.items[self.current_page * self.page_size:(self.current_page + 1) * self.page_size]:
            self.list_widget.addItem(str(item))

    def prev_page(self):
        if self.current_page > 0:
            self.current_page -= 1
            self.update_list()

    def next_page(self):
        if (self.current_page + 1) * self.page_size < len(self.items):
            self.current_page += 1
            self.update_list()

app = QApplication([])
window = MyWindow()
window.show()
app.exec_()

위 코드에서 QListWidget을 사용하여 데이터를 페이지 단위로 표시하고, “이전”과 “다음” 버튼을 클릭했을 때 페이지를 변경하도록 구현했습니다.

파이썬을 사용하여 UI에서의 스크롤과 페이징 처리는 사용자가 원활하게 데이터를 탐색할 수 있도록 도와줍니다. 각각의 라이브러리에 대해 더 자세히 알고 싶다면 공식 문서를 참고해보세요.

참고 자료


본 블로그 글은 파이썬의 Tkinter 및 PyQt를 사용하여 UI에서 스크롤과 페이징을 구현하는 방법에 대해 안내하고 있습니다.