
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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)
|
Nach dem Login kopieren
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:
1 | canvas.bind_all( '<MouseWheel>' , lambda event: canvas.yview_scroll(int(-event.delta/120), "units" ))
|
Nach dem Login kopieren
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!