Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencipta Bingkai Boleh Tatal dalam Tkinter dengan Pengaktifan Automatik?

Bagaimana untuk Mencipta Bingkai Boleh Tatal dalam Tkinter dengan Pengaktifan Automatik?

DDD
DDDasal
2024-11-14 18:13:02220semak imbas

How to Create a Scrollable Frame in Tkinter with Automatic Activation?

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:

  • Ia merangkumi kanvas, bar skrol dan bingkai dalam untuk pengurusan yang lebih mudah.
  • Ia menyegerakkan secara automatik dimensi kanvas dengan kandungan bingkai dalam.
  • Ia memastikan fungsi penatalan yang konsisten dan boleh dipercayai.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn