Tkinter Scrollbar for Frame
Isu:
Buat bar skrol menegak untuk bingkai yang diaktifkan secara automatik apabila kandungan bingkai melebihi ketinggiannya, membenarkan berbilang label dipaparkan dalam bingkai.
Pelaksanaan:
Berikut ialah kod contoh yang merangkumi bingkai boleh tatal:
# 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)
Kebaikan Pelaksanaan ini:
Penggunaan:
# 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()
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Bingkai Boleh Tatal dalam Tkinter dengan Pengaktifan Automatik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!