>  기사  >  백엔드 개발  >  캔버스와 스크롤바를 사용하여 Tkinter에서 스크롤 가능한 프레임을 어떻게 만들 수 있습니까?

캔버스와 스크롤바를 사용하여 Tkinter에서 스크롤 가능한 프레임을 어떻게 만들 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-26 08:57:12995검색

How can I create a scrollable frame in Tkinter using a canvas and scrollbar?

Tkinter를 활용하여 프레임에 스크롤바 기능 추가

Tkinter에서 스크롤 가능한 프레임을 만들려면 스크롤바를 통합해야 합니다. 프레임 높이를 초과하는 콘텐츠. 통찰력 있는 토론을 바탕으로 프레임을 구성하고 그 안에 캔버스를 포함하며 스크롤 막대를 프레임에 연결하면 원하는 기능을 얻을 수 있다는 것이 제안되었습니다. 그런 다음 추가 프레임을 수용하기 위해 캔버스 내에 창 개체가 구상되었습니다.

다음 Python 코드를 사용하면 수직으로 스크롤 가능한 프레임을 효과적으로 구현할 수 있습니다.

import tkinter as tk
import tkinter.ttk as ttk

class VerticalScrolledFrame(ttk.Frame):
    def __init__(self, parent, *args, **kw):
        ttk.Frame.__init__(self, parent, *args, **kw)
        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)
        canvas.xview_moveto(0)
        canvas.yview_moveto(0)
        self.interior = interior = ttk.Frame(canvas)
        interior_id = canvas.create_window(0, 0, window=interior, anchor=NW)
        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)

root = tk.Tk()
frame = VerticalScrolledFrame(root)
frame.pack()
for i in range(10):
    ttk.Button(frame.interior, text="Button " + str(i)).pack()
root.mainloop()

쿼리 처리 :

  1. 이 기능을 보다 효율적으로 구현하려면 코드가 제공됩니다.
  2. 그리드 방식은 프레임 내의 위젯 레이아웃을 더 효과적으로 제어할 수 있기 때문에 선호됩니다.
  3. anchor='nw' 인수는 창이 고정되어야 함을 지정합니다. 캔버스의 북서쪽 모서리에 배치하여 프레임이 수직으로 스크롤될 때 콘텐츠가 계속 표시되도록 합니다.

위 내용은 캔버스와 스크롤바를 사용하여 Tkinter에서 스크롤 가능한 프레임을 어떻게 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.