Position der Scrollbar setzen

Fragen zu Tkinter.
Antworten
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

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 ?
Möge die Python-Community gedeihen
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

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)
Möge die Python-Community gedeihen
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

Hmm.. wenn ichs nun teste, schliesst sich das Programm automatisch. Das passiert nur wenn irgend ein Fehler (nicht Syntax) drin ist.
Möge die Python-Community gedeihen
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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
Antworten