tkinter
스크롤 위젯
수색…
소개
목록 상자, 캔버스 및 텍스트 위젯에 스크롤 막대를 추가 할 수 있습니다. 또한 항목 위젯을 가로로 스크롤 할 수 있습니다. 다른 유형의 위젯을 스크롤하려면 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