Canvas/Scrollbar

Fragen zu Tkinter.
Antworten
jocsch
User
Beiträge: 31
Registriert: Freitag 4. April 2003, 13:09
Wohnort: Egloffstein (Hundshaupten)

Hallo Forum!
Ich habe auf dem üblichen Weg ein Canvas (mit scrollregion) und zwei Scrollbars erzeugt und möchte nun über die .set() - Methode der Scrollbars den sichtbaren Ausschnitt des Canvas bewegen (etwa xScroll.set(0.5, 0.6)). Das Canvas rührt sich allerdings kein Stück, und update/update_idletasks scheinen nicht der richtige Weg zu sein.
(Hintergrund: aus einer Liste der im Canvas gezeichneten Objekte auswählen und die Auswahl sichtbar machen (equivalent zu .see() - methode bei Listen))

Hat da jemand ne Idee ???

schönen Dank im voraus, jocsch
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

jocsch hat geschrieben:Hat da jemand ne Idee ???
Wenn du uns deinen Quellcode zeigst, können wir helfen. Das Problem in deinem Quellcode zu finden ohne ihn zu kennen ist gelinde gesagt schwierig.

cu Sebastian
jocsch
User
Beiträge: 31
Registriert: Freitag 4. April 2003, 13:09
Wohnort: Egloffstein (Hundshaupten)

Hallo züruck!
Soviel Quellcode gibts da eigentlich noch nicht. Ich stelle mir aber folgendes vor:

Code: Alles auswählen

def __init__(self):
  #(... übliche Infrastruktur für Canavs mit 2 Scrollbars ...)
  self.linksrechtsScroll = Scrollbar #(...)
  self.einCanvas = Canvas #(... width, height, scrollregion, xscrollcommand = self.linksrechtsScroll.set ...)
  self.linksrechtsScroll.config(command = self.einCanvas.xview)
  #( singemäss für hoch/runter)

def springInDieMitte(self):
  self.linksrechtsScroll.set(0.4, 0.6)
  self.obenuntenScroll.set(0.4,0.6)
Bei Aufruf von self.springInDieMitte() hüpfen die Scrollbars beide brav in die Mitte, aber das assoziierte Canvas rührt und regt sich nicht. Ich hab diese Verhalten zwar schon irgendwo mal dokumentiert gesehen, aber das kann wohl nicht Sinn der Sache sein?
Wer braucht denn hier im Zweifelsfall ein .update[_idletasks)]()? Das Canvas oder die Scrollbars?

Gruss, jocsch
jocsch
User
Beiträge: 31
Registriert: Freitag 4. April 2003, 13:09
Wohnort: Egloffstein (Hundshaupten)

Hallo³!
Hat sich erledigt: Direkter Aufruf von

Code: Alles auswählen

self.einCanvas.xview(MOVETO, 0.5)
ist die Lösung!

... und Tschüss!
Antworten