Heim > Backend-Entwicklung > Python-Tutorial > Wie erstelle ich in Tkinter einen scrollbaren Rahmen mit automatischer Aktivierung?

Wie erstelle ich in Tkinter einen scrollbaren Rahmen mit automatischer Aktivierung?

DDD
Freigeben: 2024-11-14 18:13:02
Original
199 Leute haben es durchsucht

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

Tkinter-Bildlaufleiste für Frame

Problem:

Erstellen Sie eine vertikale Bildlaufleiste für einen Rahmen, der Wird automatisch aktiviert, wenn der Inhalt des Rahmens seine Höhe überschreitet, sodass mehrere Beschriftungen innerhalb des Rahmens angezeigt werden können.

Implementierung:

Hier ist ein Beispielcode, der einen scrollbaren Rahmen kapselt:

# 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)
Nach dem Login kopieren

Vorteile dieser Implementierung:

  • Es kapselt die Leinwand, die Bildlaufleiste und den inneren Rahmen für eine einfachere Verwaltung.
  • Es synchronisiert die Leinwandabmessungen automatisch mit dem Inhalt des inneren Rahmens.
  • Es gewährleistet eine konsistente und zuverlässige Scroll-Funktionalität.

Verwendung:

# 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()
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erstelle ich in Tkinter einen scrollbaren Rahmen mit automatischer Aktivierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage