Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich in Tkinter einen scrollbaren Rahmen mit einer vertikalen Bildlaufleiste?

Wie erstelle ich in Tkinter einen scrollbaren Rahmen mit einer vertikalen Bildlaufleiste?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-23 20:35:10631Durchsuche

How to Create a Scrollable Frame with a Vertical Scrollbar in Tkinter?

Tkinter-Bildlaufleiste für Frame

Verwendung eines scrollbaren Rahmens

Das tkinter-Paket stellt dies nicht zur Verfügung eine integrierte vertikale Bildlaufleiste für einen Rahmen. Sie können jedoch eines mit einer Kombination aus Canvas-, Scrollbar- und Frame-Widgets erstellen. Hier ist ein Beispiel:

class VerticalScrolledFrame(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        # Create a canvas
        canvas = tk.Canvas(self)
        canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

        # Create a vertical scrollbar
        scrollbar = ttk.Scrollbar(self, orient=tk.VERTICAL)
        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

        # Connect the scrollbar to the canvas
        scrollbar.config(command=canvas.yview)
        canvas.config(yscrollcommand=scrollbar.set)

        # Reset the view
        canvas.xview_moveto(0)
        canvas.yview_moveto(0)

        # Create a frame inside the canvas
        self.interior = ttk.Frame(canvas)
        canvas.create_window(0, 0, window=self.interior, anchor=NW)

Bildlaufleiste an Mausrad binden

Standardmäßig fehlt den Bildlaufleisten von Tkinter die Scrollfunktion mit dem Mausrad. Um es zu aktivieren, können wir das Mausrad-Ereignis an die yview_scroll-Methode der Leinwand binden:

canvas.bind_all('<MouseWheel>', lambda event: canvas.yview_scroll(int(-event.delta/120), "units"))

Unterschiede zum OP-Code

  • Die VerticalScrolledFrame-Klasse Bietet eine robustere scrollbare Rahmenimplementierung.
  • Die Leinwandgröße wird automatisch an die Innenseite angepasst Rahmen.
  • Es unterstützt auch das Scrollen mit dem Mausrad.

Andere Punkte

  • Für normale Widgets (wie Beschriftungen), Raster wird gegenüber place bevorzugt, da es ein strukturierteres Layout bietet.
  • anchor='nw' gibt an, dass das Fenster (innerer Rahmen) positioniert werden soll an der nordwestlichen Ecke der Leinwand.

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

Stellungnahme:
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