프레임용 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!