2013-05-16 11 views
6

Udało mi się uzyskać Scrollbar do pracy z widżetem Text, ale z jakiegoś powodu nie jest rozciągany w celu dopasowania do pola tekstowego.Pasek przewijania nie rozciągający się w celu dopasowania do widżetu Tekst

Czy ktoś wie, w jaki sposób zmienić wysokość widżetu paska przewijania lub coś podobnego?

txt = Text(frame, height=15, width=55) 
scr = Scrollbar(frame) 
scr.config(command=txt.yview) 
txt.config(yscrollcommand=scr.set) 
txt.pack(side=LEFT) 

Odpowiedz

8

w swoim pytaniu używasz pack. pack ma opcje, aby powiedzieć mu, aby rosnąć lub zmniejszać się w jednej lub obu osi X i Y. Pionowe paski przewijania powinny normalnie rosnąć/zmniejszać się na osi Y, a pionowe w osi X. Widżety tekstowe powinny zwykle wypełniać się w obu kierunkach.

Dla robi widget tekstowy i przewijania w ramce byś zwykle zrobić coś takiego:

scr.pack(side="right", fill="y", expand=False) 
text.pack(side="left", fill="both", expand=True) 

Powyższy mówi następujące rzeczy:

  • przewijania znajduje się po prawej (side="right")
  • pasek przewijania powinien rozciągnąć się, aby wypełnić dodatkową przestrzeń w osi Y (fill="y")
  • Widżet tekstowy jest włączony opuścił (side="left")
  • widget tekście należy rozciągnąć, aby wypełnić dodatkowej przestrzeni w osi X i Y (fill="both")
  • widget tekst wzrośnie o cały pozostałą przestrzeń zawierającą ramy (expand=True)

więcej informacji można znaleźć http://effbot.org/tkinterbook/pack.htm

4

Oto przykład:

from Tkinter import * 
root = Tk() 
text = Text(root) 
text.grid() 
scrl = Scrollbar(root, command=text.yview) 
text.config(yscrollcommand=scrl.set) 
scrl.grid(row=0, column=1, sticky='ns') 
root.mainloop() 

to sprawia, że ​​pole tekstowe i sticky='ns' sprawia, że ​​pasek przewijania przejść całą drogę w górę iw dół okna

+0

Twój przykład zaniedbuje ustawienie ciężaru w wierszu lub kolumnie, więc prawdopodobnie nie zmieni rozmiaru poprawnie. –

4

proste rozwiązanie, aby użyć tekstowe ze zintegrowanym przewijania:

Python 3:

#Python 3 
import tkinter 
import tkinter.scrolledtext 

tk = tkinter.Tk() 
text = tkinter.scrolledtext.ScrolledText(tk) 
text.pack() 
tk.mainloop() 

Aby przeczytać tekstowego:

string = text.get("1.0","end") # reads from the beginning to the end 

oczywiście można skrócić importu, jeśli chcesz.

W Python 2 ty zamiast tego import ScrolledText.

+0

W Pythonie 2 to: 'z ScrolledText import ScrolledText' ' ... '' Text = ScrolledTex (TK) ' . –