Utiliser Tkinter pour ajouter une fonctionnalité de barre de défilement aux cadres
Dans Tkinter, la création d'un cadre déroulant nécessite l'incorporation d'une barre de défilement, qui permet le défilement automatique de contenu qui dépasse la hauteur du cadre. Sur la base de discussions approfondies, il a été suggéré que la construction d'un cadre, l'inclusion d'un canevas à l'intérieur et l'attachement de la barre de défilement au cadre permettraient d'obtenir la fonctionnalité souhaitée. Un objet fenêtre a ensuite été conçu dans le canevas pour accueillir des cadres supplémentaires.
À l'aide du code Python suivant, un cadre à défilement vertical peut être implémenté efficacement :
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()
Réponse aux requêtes :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!