2013-05-16 6 views
6

Ich konnte die Scrollbar mit einem Text Widget arbeiten, aber aus irgendeinem Grund ist es nicht dehnen, um das Textfeld zu passen.Bildlaufleiste nicht dehnen, um das Text-Widget zu passen

Kennt jemand eine Möglichkeit, die Höhe des Scrollbar-Widget oder etwas in diesem Sinne zu ändern? Hier

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

Antwort

8

In Ihrer Frage, die Sie verwenden pack. pack hat Optionen, um zu sagen, dass es entweder in der x- oder in der y-Achse wachsen oder schrumpfen soll. Vertikale Bildlaufleisten sollten normalerweise in der y-Achse und horizontale in der x-Achse wachsen/schrumpfen. Text-Widgets sollten normalerweise beide Richtungen ausfüllen.

für einen Text-Widget und Scrollbar in einem Rahmen tun würden Sie in der Regel so etwas tun:

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

Die oben sagt die folgenden Dinge:

  • Scrollbar auf der rechten Seite (side="right")
  • Bildlaufleiste sollte strecken, um zusätzlichen Raum in der y-Achse zu füllen (fill="y")
  • das Text-Widget ist auf t er links (side="left")
  • der Text-Widget sollte jeden zusätzlichen Platz in der x- und y-Achse zu füllen Stretch (fill="both")
  • der Text Widget wird alle auf verbleibenden Platz in dem Aufnahmerahmen zu übernehmen (expand=True)

weitere Informationen http://effbot.org/tkinterbook/pack.htm

4

ist ein Beispiel:

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() 

dies macht ein Textfeld und die sticky='ns' macht die Scrollbar gehen den ganzen Weg nach oben und unten im Fenster

+0

In Ihrem Beispiel wird keine Gewichtung für die Zeile oder Spalte festgelegt, daher wird die Größe wahrscheinlich nicht korrekt geändert. –

4

Einfache Lösung sieht ein Textfeld mit einer integrierten Scrollbar zu verwenden:

Python 3:

#Python 3 
import tkinter 
import tkinter.scrolledtext 

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

die Textbox zu lesen:

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

Natürlich können Sie die Importe verkürzen, wenn Sie wollen.

In Python 2 Sie import ScrolledText statt.

+0

In Python 2 ist dies: 'von ScrolledText Import ScrolledText' ' ... '' text = ScrolledTex (tk) ' . –

Verwandte Themen