수색…


소개

목록 상자, 캔버스 및 텍스트 위젯에 스크롤 막대를 추가 할 수 있습니다. 또한 항목 위젯을 가로로 스크롤 할 수 있습니다. 다른 유형의 위젯을 스크롤하려면 Canvas 또는 Text 위젯 내부에 배치해야합니다.

통사론

  • scrollbar = tk.Scrollbar (부모, ** kwargs)

매개 변수

매개 변수 기술
부모의 tkinter 위젯은 계층에 존재합니다. 루트 창을 제외하고 모든 위젯에는 부모가 있습니다. 일부 온라인 자습서에서는이를 "마스터"라고 부릅니다. 위젯이 pack, place 또는 grid로 화면에 추가되면이 상위 위젯 안에 나타납니다
동양 스크롤 바의 "vertical" (디폴트 값) 또는 "horizontal"

비고

이 예제들은 tkinter가 import tkinter as tk ( import tkinter as tk (파이썬 3) 또는 import tkinter as tk ( import Tkinter as tk (파이썬 2) import Tkinter as tk 되었다고 가정합니다.

텍스트 위젯에 수직 스크롤바 연결하기

위젯과 스크롤 바 사이의 연결은 두 가지 방식으로 진행됩니다. 스크롤바는 위젯과 같은 높이가되도록 세로로 확장해야합니다.

text = tk.Text(parent)
text.pack(side="left")

scroll_y = tk.Scrollbar(parent, orient="vertical", command=text.yview)
scroll_y.pack(side="left", expand=True, fill="y")

text.configure(yscrollcommand=scroll_y.set)

캔버스 위젯을 수평 및 수직으로 스크롤

원칙적으로 텍스트 위젯과 원칙적으로 동일하지만 Grid 레이아웃은 스크롤 막대를 위젯 주위에 두는 데 사용됩니다.

canvas = tk.Canvas(parent, width=150, height=150)
canvas.create_oval(10, 10, 20, 20, fill="red")
canvas.create_oval(200, 200, 220, 220, fill="blue")
canvas.grid(row=0, column=0)

scroll_x = tk.Scrollbar(parent, orient="horizontal", command=canvas.xview)
scroll_x.grid(row=1, column=0, sticky="ew")

scroll_y = tk.Scrollbar(parent, orient="vertical", command=canvas.yview)
scroll_y.grid(row=0, column=1, sticky="ns")

canvas.configure(yscrollcommand=scroll_y.set, xscrollcommand=scroll_x.set)

텍스트 위젯과는 달리 캔버스의 스크롤 영역은 내용이 수정 될 때 자동으로 업데이트되지 않으므로이를 정의하고 scrollregion 인수를 사용하여 수동으로 업데이트해야합니다.

canvas.configure(scrollregion=canvas.bbox("all"))

canvas.bbox("all") 는 전체 캔버스 내용에 맞는 사각형의 좌표를 반환합니다.

위젯 그룹 스크롤하기

창에 많은 위젯이 포함되어있는 경우 모두 표시되지 않을 수 있습니다. 그러나 창 (Tk 또는 Toplevel 인스턴스)이나 프레임도 스크롤 할 수 없습니다. 창 내용을 스크롤 할 수있게 만드는 한 가지 해결책은 모든 위젯을 프레임에 넣은 다음 create_window 메서드를 사용하여이 프레임을 Canvas에 포함시키는 것입니다.

canvas = tk.Canvas(parent)
scroll_y = tk.Scrollbar(parent, orient="vertical", command=canvas.yview)

frame = tk.Frame(canvas)
# group of widgets
for i in range(20):
    tk.Label(frame, text='label %i' % i).pack()
# put the frame in the canvas
canvas.create_window(0, 0, anchor='nw', window=frame)
# make sure everything is displayed before configuring the scrollregion
canvas.update_idletasks()

canvas.configure(scrollregion=canvas.bbox('all'), 
                 yscrollcommand=scroll_y.set)
                 
canvas.pack(fill='both', expand=True, side='left')
scroll_y.pack(fill='y', side='right')


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow