Seite 1 von 1

Position der Scrollbar setzen

Verfasst: Sonntag 21. März 2004, 11:49
von MacEvil
Ich lade einen Text in eine TextArea. Per text.see(0) gehe ich auf die erste Zeile, aber die Scrollbar ist dann immernoch unten und wenn ich sie verschiebe, springt das Feld automatisch nach unten, was schlecht aussieht.
Aber scroller.set(0,0) bringt nix ?

Verfasst: Sonntag 21. März 2004, 16:56
von Milan
Hi. Das reicht an Angaben nicht... welches GUI-Toolkit (hier Tkinter, aber sonst trotzdem immer mit erwähnen), welche Version von Tk, Version von Python (gibt Inkompatibilitäten zwsichen einigen Versionen Python <--> Tk), Quellcode wo Scrollbar + Textarea gesetzt/konfiguriert werden...

Ohne das gehts nicht.

Milan

Verfasst: Sonntag 21. März 2004, 17:41
von MacEvil
OK

Python 2.3, Tcl&Tk 8.4.x

Wird durch ein klick auf eine Liste ausgelöst :

Code: Alles auswählen

def WLshowLyric (event) :
	file = rootList.get(rootList.nearest(event.y))
	lyric = open(rootHomeDir+'Resources/WulfieLyric/'+filenames[file],'U').read()
	rootText.delete(1.0, END)
	rootText.insert(INSERT, lyric)
	rootText.see(0)

Verfasst: Montag 22. März 2004, 21:48
von Milan
Hi. pydoc meint zur Scrollbarmethode set das hier:
set(self, *args)
Set the fractional values of the slider position (upper and
lower ends as value between 0 and 1).
Probiers also einfach mal nur mit einem scroller.set(0). Ansonsten müsste die Scrollbar wirklich automatisch hochspringen, wenn du rootText=Tkinter.Text(master,yscrollcommand=scroller.set) beim Initialsisieren der Textarea gemacht hast und danach ein scroller.config(command=rootText.yview) gemacht hast.

hth, Milan

Verfasst: Dienstag 23. März 2004, 13:48
von MacEvil
Hmm.. wenn ichs nun teste, schliesst sich das Programm automatisch. Das passiert nur wenn irgend ein Fehler (nicht Syntax) drin ist.

Verfasst: Mittwoch 24. März 2004, 15:44
von Milan
Hi. Ich bin nun endlich mal wieder vor nem PC mit Tkinter, sodass ich es ausprobieren konnte... Zuerstenmal bringt er mir immer einen Fehler, wenn rootText.see aufgerufen wird.:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python23\lib\lib-tk\Tkinter.py", line 1345, in __call__
    return self.func(*args)
  File "C:/Temp/test.py", line 150, in do_reset
    self.text.see(0)
  File "C:\Python23\lib\lib-tk\Tkinter.py", line 2943, in see
    self.tk.call(self._w, 'see', index)
TclError: bad text index "0"
Den hättest du eigentlich auch haben müssen und... dann wärs auch schneller gegangen das zu lösen (er macht es bei mir trotzdem). Dann ist mir eingefallen, dass ja Indexe per String angeben werden und zwar in diesem Fall als "1.0". Damit geht es bei mir Fehlerfrei.

Milan