자동 활성화를 사용하여 Tkinter에서 스크롤 가능한 프레임을 만드는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-14 18:13:02
원래의
137명이 탐색했습니다.

How to Create a Scrollable Frame in Tkinter with Automatic Activation?

프레임용 Tkinter 스크롤 막대

문제:

프레임에 대한 수직 스크롤 막대를 만듭니다. 프레임 내용이 높이를 초과하면 자동으로 활성화되어 프레임 내에 여러 레이블을 표시할 수 있습니다. 프레임.

구현:

다음은 스크롤 가능한 프레임을 캡슐화하는 샘플 코드입니다.

# VerticalScrolledFrame class allows vertical scrolling within a frame
class VerticalScrolledFrame(ttk.Frame):
    def __init__(self, parent, *args, **kw):
        # Create a canvas and vertical scrollbar
        vscrollbar = ttk.Scrollbar(self, orient=VERTICAL)
        vscrollbar.pack(fill=Y, side=RIGHT, expand=FALSE)
        canvas = tk.Canvas(self, bd=0, highlightthickness=0,
                            yscrollcommand=vscrollbar.set)
        canvas.pack(side=LEFT, fill=BOTH, expand=TRUE)
        vscrollbar.config(command=canvas.yview)
        
        # Create an inner frame for content, scrollable within the canvas
        self.interior = interior = ttk.Frame(canvas)
        interior_id = canvas.create_window(0, 0, window=interior,
                                            anchor=NW)
        
        # Synchronize frame and canvas dimensions
        def _configure_interior(event):
            size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
            canvas.config(scrollregion="0 0 %s %s" % size)
            if interior.winfo_reqwidth() != canvas.winfo_width():
                canvas.config(width=interior.winfo_reqwidth())
        interior.bind('<Configure>', _configure_interior)
        
        def _configure_canvas(event):
            if interior.winfo_reqwidth() != canvas.winfo_width():
                canvas.itemconfigure(interior_id, width=canvas.winfo_width())
        canvas.bind('<Configure>', _configure_canvas)
로그인 후 복사

이 구현의 장점:

  • 그것은 캔버스, 스크롤 막대 및 내부 프레임을 캡슐화하여 보다 쉽게 ​​관리할 수 있습니다.
  • 캔버스 크기를 내부 프레임의 콘텐츠와 자동으로 동기화합니다.
  • 일관되고 안정적인 스크롤 기능을 보장합니다.

사용법:

# Example usage
app = tk.Tk()
my_frame = VerticalScrolledFrame(app)
my_frame.pack()
for i in range(50):
    ttk.Label(my_frame.interior, text=i).grid(row=i, column=0)  # Grid method ensures proper layout of labels
app.mainloop()
로그인 후 복사

위 내용은 자동 활성화를 사용하여 Tkinter에서 스크롤 가능한 프레임을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿