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...
Canvas: yscrollcommand
- Hannes-Spz
- User
- Beiträge: 123
- Registriert: Sonntag 7. August 2005, 22:42
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
-
- User
- Beiträge: 170
- Registriert: Samstag 4. Juni 2005, 18:51
- Wohnort: Großmehlra (in Thüringen)
- Kontaktdaten:
Hi Hannes!
Damit müsste es funktionieren...
ich hab es nicht richtig ausprobiert... jedenfalls gibt es rechts ne scrollbar
musst du selbst ausprobieren
mfg JAN
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()
musst du selbst ausprobieren
mfg JAN
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
import os,sys
while 1: os.startfile(sys.argv[0])
- Hannes-Spz
- User
- Beiträge: 123
- Registriert: Sonntag 7. August 2005, 22:42
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:
die scrollbar zeigt er mir zwar an, aber sie glaubt warscheinlich, dass can nicht
gefüllt ist... ?!
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()
gefüllt ist... ?!
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
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
http://www.python-forum.de/post-32841.html#32841
gelesen?
Brauchst du wirklich ein Canvas wenn du Text reinschreiben willst?
cu Sebastian
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
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()

Ich hoffe das hilft Dir weiter.
Liebe Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
- Hannes-Spz
- User
- Beiträge: 123
- Registriert: Sonntag 7. August 2005, 22:42
Michael, du bist ein Gott!!
diese antwort von dir hat gleich 4 weitere "projekte" von mir vereinfacht...
tausend dank!!
diese antwort von dir hat gleich 4 weitere "projekte" von mir vereinfacht...
tausend dank!!

[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
Hi Hannes,Hannes-Spz hat geschrieben:Michael, du bist ein Gott!!
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
Diese Nachricht zersört sich in 5 Sekunden selbst ...