Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich in Tkinter mithilfe einer Leinwand und einer Bildlaufleiste einen scrollbaren Rahmen erstellen?

Wie kann ich in Tkinter mithilfe einer Leinwand und einer Bildlaufleiste einen scrollbaren Rahmen erstellen?

Mary-Kate Olsen
Freigeben: 2024-11-26 08:57:12
Original
1023 Leute haben es durchsucht

How can I create a scrollable frame in Tkinter using a canvas and scrollbar?

Verwendung von Tkinter zum Hinzufügen von Bildlaufleistenfunktionen zu Frames

In Tkinter muss zum Erstellen eines scrollbaren Rahmens eine Bildlaufleiste integriert werden, die das automatische Scrollen ermöglicht Inhalte, die über die Rahmenhöhe hinausgehen. Basierend auf aufschlussreichen Diskussionen wurde vorgeschlagen, dass die gewünschte Funktionalität durch die Konstruktion eines Rahmens, das Einschließen einer Leinwand darin und das Anbringen der Bildlaufleiste am Rahmen erreicht werden könnte. Anschließend wurde ein Fensterobjekt innerhalb der Leinwand konzipiert, um zusätzliche Rahmen aufzunehmen.

Mit dem folgenden Python-Code kann ein vertikal scrollbarer Rahmen effektiv implementiert werden:

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

Ansprechen der Abfragen :

  1. Durch die Verwendung des Codes ist es möglich, diese Funktionalität effizienter zu erreichen bereitgestellt.
  2. Die Rastermethode wird bevorzugt, da sie eine bessere Kontrolle über das Layout von Widgets innerhalb des Frames ermöglicht.
  3. Das Argument „anker='nw“ gibt an, dass das Fenster im verankert werden soll Nordwestecke der Leinwand, um sicherzustellen, dass der Inhalt sichtbar bleibt, wenn der Rahmen vertikal gescrollt wird.

Das obige ist der detaillierte Inhalt vonWie kann ich in Tkinter mithilfe einer Leinwand und einer Bildlaufleiste einen scrollbaren Rahmen erstellen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage