Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh mencipta bingkai boleh tatal dalam Tkinter menggunakan kanvas dan bar skrol?
Menggunakan Tkinter untuk Menambah Fungsi Bar Tatal pada Bingkai
Dalam Tkinter, mencipta bingkai boleh tatal memerlukan memasukkan bar tatal, yang membolehkan tatal automatik bagi kandungan yang melebihi ketinggian bingkai. Berdasarkan perbincangan yang bernas, adalah dicadangkan bahawa membina bingkai, melampirkan kanvas di dalamnya dan melampirkan bar skrol pada bingkai akan mencapai kefungsian yang diingini. Objek tetingkap kemudiannya disusun dalam kanvas untuk memuatkan bingkai tambahan.
Menggunakan kod Python berikut, bingkai boleh tatal secara menegak boleh dilaksanakan dengan berkesan:
import tkinter as tk import tkinter.ttk as ttk class VerticalScrolledFrame(ttk.Frame): def __init__(self, parent, *args, **kw): ttk.Frame.__init__(self, parent, *args, **kw) 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) canvas.xview_moveto(0) canvas.yview_moveto(0) self.interior = interior = ttk.Frame(canvas) interior_id = canvas.create_window(0, 0, window=interior, anchor=NW) 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) root = tk.Tk() frame = VerticalScrolledFrame(root) frame.pack() for i in range(10): ttk.Button(frame.interior, text="Button " + str(i)).pack() root.mainloop()
Mengatasi Pertanyaan :
Atas ialah kandungan terperinci Bagaimanakah saya boleh mencipta bingkai boleh tatal dalam Tkinter menggunakan kanvas dan bar skrol?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!