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
Lepaskan: 2024-11-14 18:13:02
asal
200 orang telah melayarinya

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)
Salin selepas log masuk

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()
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan