Forum: PC-Programmierung Python scrollbar automatisch immer ganz unten


von Stephan (Gast)


Lesenswert?

Hi,

wie kann ich in Python und tkinter das Textfeld so einstellen, dass er 
immer ganz unten in der letzten Zeile ist?

Ich habe im laufenden Programm immer wieder mal Ausgaben die ich im 
Textfeld anzeigen lassen möchte. Das mache ich so.
1
myText.insert(END, 'Text der ausgegeben wird')


Als Beispiel:
1
from tkinter import *
2
import tkinter as tk
3
4
fenster = tk.Tk()
5
6
myText = Text(fenster, height=20, width=50)
7
scroll = Scrollbar(fenster, command=myText.yview)
8
myText.configure(yscrollcommand=scroll.set)
9
myText.tag_configure('bold_italics', font=('Arial', 12, 'bold', 'italic'))
10
myText.tag_configure('big', font=('Verdana', 10, 'bold'))
11
myText.tag_configure('color', foreground='#8B0000', font=('Arial', 12, 'bold'))
12
myText.pack(side=LEFT)
13
scroll.pack(side=RIGHT, fill=Y)
14
15
16
myText.insert(END, 'Textzeile 1 \n\n', 'color')  
17
myText.insert(END, 'Textzeile 2 \n\n', 'color')  
18
myText.insert(END, 'Textzeile 3 \n\n', 'color')  
19
myText.insert(END, 'Textzeile 4 \n\n', 'color')  
20
myText.insert(END, 'Textzeile 5 \n\n', 'color')  
21
myText.insert(END, 'Textzeile 6 \n\n', 'color')  
22
myText.insert(END, 'Textzeile 7 \n\n', 'color')  
23
myText.insert(END, 'Textzeile 8 \n\n', 'color')  
24
myText.insert(END, 'Textzeile 9 \n\n', 'color')  
25
myText.insert(END, 'Textzeile 10 \n\n', 'color')  
26
myText.insert(END, 'Textzeile 11 \n\n', 'color')  
27
myText.insert(END, 'Textzeile 12 \n\n', 'color') 
28
29
    
30
    
31
    
32
  
33
fenster.mainloop()

von Christian M. (Gast)


Lesenswert?

Höre Stephan, ich kenn mich weder mit Python aus, noch weiss ich, unter 
welchem OS Du das nutzt, aber unter Windows habe ich das so gemacht:
1
@SendMessage(textfenster%,$00B1,-1,-1) 'Cursor auf Ende setzensetzen oder markieren
2
@SendMessage(textfenster%,$00C2,0,@ADDR(text$)) 'Text einfügen/ersetzen
3
@SendMessage(textfenster%,$00B6,0,1) 'Zeile Scrollen

Vielleicht hilft's ja...

Gruss Chregu

Edit: Tippfehler beseitigt

von Clemens L. (c_l)


Lesenswert?

"Immer" geht nicht. Zur passenden Zeit myText.yview(END) aufrufen.

Den Cursor kann man mit myText.mark_set(INSERT, myText.index(END)) 
setzen.

: Bearbeitet durch User
von Rolf Magnus (Gast)


Lesenswert?

Clemens L. schrieb:
> "Immer" geht nicht.

Bringt ja auch irgendwie nichts. Was will ich mit einem Scrollbar, der 
immer an einer bestimmten Stelle festgenagelt ist? Quasi ein Scrollbar, 
der nicht scrollbar ist.
Eine gänge Implementation ist, dass der Scrollbar quasi unten kleben 
bleibt. Man kann immer frei scrollen, und die Position bleibt auch da 
stehen, wo man hingescrollt hat, außer, wenn der Scrollbar ganz unten 
ist. Dann wird beim Anhängen von Text automatisch weitegescrollt.
Ich kenne mich mit Tkinter nicht aus, aber vom Prinzip her würde ich vor 
dem Anhängen des Texts prüfen, ob der Scrollbar ganz am Ende steht. Wenn 
ja, dann wird er nach dem Einfügen auch wieder ganz ans Ende geschoben, 
sonst nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.