Seite 1 von 1
Canvas: yscrollcommand
Verfasst: Montag 10. April 2006, 15:58
von Hannes-Spz
hi leutz, ....
ich komme hier einfach nicht mehr weiter,
kann mal bitte, bitte jemand 5 min seiner sicherlich kostbaren zeit dazu opfern,
mir zu sagen, wie man mittels einer scrollbar und einem canvas immer in diesem
canvas hoch und herunterscrollen kann??
bei mir schreibe ich mittels canvas.create_text() etwas in das Canvas-Feld, was aber dann überlänge bekommt, aber das Canvas sich trotz
.pack(expand = 1)
nicht erweitert...
Verfasst: Dienstag 11. April 2006, 12:27
von jAN
Hi Hannes!
Damit müsste es funktionieren...
Code: Alles auswählen
from Tkinter import *
root=Tk()
yscrollbar=Scrollbar(root,orient=VERTICAL)
can=Canvas(root,yscrollcommand=yscrollbar.set)
yscrollbar.pack(side=RIGHT,fill=Y)
can.pack(side=LEFT,fill=BOTH,expand=1)
yscrollbar.config(command=can.yview)
root.mainloop()
ich hab es nicht richtig ausprobiert... jedenfalls gibt es rechts ne scrollbar
musst du selbst ausprobieren
mfg JAN
Verfasst: Mittwoch 12. April 2006, 15:20
von Hannes-Spz
danke erstmal, aber das hatte ich auch schon probiert...
die sache kommt genau dann ins stocken, wenn man das script folgendermaßen
erweitert/verändert:
Code: Alles auswählen
from Tkinter import *
root=Tk()
yscrollbar=Scrollbar(root,orient=VERTICAL)
can=Canvas(root,yscrollcommand=yscrollbar.set)
yscrollbar.pack(side=RIGHT,fill=Y)
can.pack(side=LEFT,fill=BOTH,expand=1)
yscrollbar.config(command=can.yview)
####
for i in range(20):
can.create_text(20, 15*i, text = str(i))
####
root.mainloop()
die scrollbar zeigt er mir zwar an, aber sie glaubt warscheinlich, dass can nicht
gefüllt ist... ?!
Verfasst: Mittwoch 12. April 2006, 15:45
von Mr_Snede
Hast du schon:
http://www.python-forum.de/post-32841.html#32841
gelesen?
Brauchst du wirklich ein Canvas wenn du Text reinschreiben willst?
cu Sebastian
Re: Canvas: yscrollcommand
Verfasst: Mittwoch 12. April 2006, 19:05
von Michael Schneider
Hannes-Spz hat geschrieben:...
kann mal bitte, bitte jemand 5 min seiner sicherlich kostbaren zeit dazu opfern,
mir zu sagen, wie man mittels einer scrollbar und einem canvas immer in diesem
canvas hoch und herunterscrollen kann??
bei mir schreibe ich mittels canvas.create_text() etwas in das Canvas-Feld, was aber dann überlänge bekommt, aber das Canvas sich trotz
.pack(expand = 1)
nicht erweitert...
Hallo Hannes,
bekommst gern meine Zeit! Expand bringt Dir nur etwas, wenn sich die Größe des Canvas Widgets ändert, nicht die seiner Inhalte. Aber die Lösung ist beeindruckend einfach und heißt:
scrollregion
Ich habe Dir mal eine kurze Demo mit zwei Scrollbalken zusammengezimmert. Dabei habe ich aber den grid-Geometriemanager benutzt, ich finde den irgendwie übersichtlicher. Hier der Code:
Code: Alles auswählen
import Tkinter as TK
import Canvas
tk = TK.Tk()
yscroll = TK.Scrollbar(tk, orient = TK.VERTICAL)
yscroll.grid(row = 1, column = 2, sticky = TK.NS)
xscroll = TK.Scrollbar(tk, orient = TK.HORIZONTAL)
xscroll.grid(row = 2, column = 1, sticky = TK.EW)
canvas = TK.Canvas(tk,
width = 200,
height = 200,
scrollregion = "0 0 400 400", ## Scrollregion im Bereich 0,0 - 400, 400
yscrollcommand = yscroll.set, ## Canvashoehe an yscroll uebergeben
xscrollcommand = xscroll.set) ## Canvasbreite an xscroll uebergeben
canvas.grid(row = 1, column = 1)
rect = Canvas.Rectangle(canvas, (40, 40), (280, 380), fill="#9999ff") ## um was zu sehen
yscroll.config(command = canvas.yview) ## yscrollwerte an canvas uebergeben
xscroll.config(command = canvas.xview) ## xscrollwerte an canvas uebergeben
tk.mainloop()
Ist ganz einfach. Der Canvas ist eine ideale (unendliche) Fläche. Du brauchst nur festzulegen, welchen Ausschnitt Du sehen möchtest (in meinem Beispiel von 0,0 bis 400,400) und schon funzt das.
Ich hoffe das hilft Dir weiter.
Liebe Grüße,
der Michel
Verfasst: Donnerstag 13. April 2006, 19:21
von Hannes-Spz
Michael, du bist ein Gott!!
diese antwort von dir hat gleich 4 weitere "projekte" von mir vereinfacht...
tausend dank!!
Verfasst: Sonntag 16. April 2006, 22:17
von Michael Schneider
Hannes-Spz hat geschrieben:Michael, du bist ein Gott!!
Hi Hannes,
auch wenn diese Einstellung eine gute Basis für weitere Gespräche wäre, so muss ich Dir dennoch widersprechen. Ich habe diese option auch erst vor ca. 3 Wochen im genialen Einsteigerwerk "Das Python-Buch" im Abschnitt über Tkinter gelesen.
Grüße,
Michael