2016-03-20 18 views
1

Ich versuche, eine Gui mit zwei Leinwand und einem Scrollbalken gleichzeitig als Test für ein anderes Projekt zu erstellen. Ich habe die Wurzel, die beiden Leinwand erstellt und einige Etiketten mit der Rastermethode festgesteckt, sowie die Bildlaufleiste erstellt.Tkinter Bildlaufleiste nicht scrollen

Allerdings, wenn ich das Programm ausführen, bewegt die Bildlaufleiste Geldstrafen, aber der Inhalt des Fensters ändert sich überhaupt nicht, als ob die Leiste nicht funktionierte. Ich habe ein paar Lösungen ausprobiert, indem ich mein Problem gegoogelt habe, aber bisher konnte ich es nicht lösen.

Der entsprechende Code ist

from tkinter import * 
root = Tk() 
‪#‎scroll‬ 
scrollbar = Scrollbar(root) 
scrollbar.pack(side=RIGHT, fill=Y) 
firstCanvas = Canvas(root, width=200, height=100) 
firstCanvas.pack(side="left", fill="both", expand=True) 
secondCanvas = Canvas(root, width=20000, height=10000,scrollregion=(0,0,0,5000),yscrollcommand=scrollbar.set) 
secondCanvas.pack(side="left", fill="both", expand=True) 
secondCanvas.create_rectangle((200,300,300,6000)) 
widget = Label(firstCanvas, text='Spam') 
widget.pack() 

# Lots of widgets so they reach beyond the screen, all in the following format 

widgetOne=Label(firstCanvas, text="this is a test") 
widgetOne.pack() 
widgetTwo=Entry(firstCanvas) 
widgetTwo.pack() 
widgetThree=Label(secondCanvas, text='Spam') 
widgetFour=Entry(secondCanvas) 
widgetFour.pack() 

scrollbar.config(command=secondCanvas.yview) 
mainloop() 

Antwort

2

Die Leinwand nur Leinwand Objekte bewegen wird. Für Widgets, bedeutet, dass Widgets mit canvas.create_window(...) erstellt

Siehe Adding a scrollbar to a group of widgets in Tkinter

+0

es mit dem Text und Label-Widgets fein gearbeitet. Allerdings, wenn ich in ein paar Tasten hinzufügen, wirft er die Fehler '„Traceback (jüngste Aufforderung zuletzt): File "/home/juanelo/Downloads/prueba2.py", Linie 978, in bevöl (frame) Datei "/home/juanelo/Downloads/prueba2.py", Zeile 966, wird ausgefüllt grabarBTN.grid (row = 0, column = 6) Datei "/usr/lib/python3.4/tkinter/__init__. py ", Zeile 2060, in grid_configure + self._options (cnf, kw)) _tkinter.TclError: kann nicht das geometry manager grid in verwenden. welches bereits slaves hat, die von pack verwaltet werden" ' –

+0

@JuanDougnac: lese die fehlermeldung. Es sagt dir genau, was das Problem ist. Sie können Grid und Pack nicht im selben übergeordneten Fenster verwenden (was "." In diesem Stack-Trace darstellt) –

Verwandte Themen