2013-05-16 6 views
6

Sono riuscito a far funzionare il con un widget Text, ma per qualche motivo non si estende per adattarsi alla casella di testo.Barra di scorrimento che non si estende per adattarsi al widget Testo

Qualcuno sa come modificare l'altezza del widget della barra di scorrimento o qualcosa del genere?

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

risposta

8

Nella tua domanda si sta utilizzando pack. pack ha opzioni per dirgli di crescere o ridurre in entrambi o entrambi gli assi xe y. Le barre di scorrimento verticali dovrebbero normalmente crescere/ridursi sull'asse ye orizzontali sull'asse x. I widget di testo dovrebbero in genere riempire entrambe le direzioni.

per fare un widget di testo e barra di scorrimento in una cornice è in genere fare qualcosa di simile:

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

È possibile che dice le seguenti cose:

  • barra di scorrimento si trova sulla destra (side="right")
  • La barra di scorrimento dovrebbe allungarsi per riempire qualsiasi spazio aggiuntivo nell'asse y (fill="y")
  • il widget di testo è su t lasciò (side="left")
  • il widget testo dovrebbe tendere ad occupare gli spazi nelle all'asse x ed y (fill="both")
  • widget di testo si espanderà per occupare tutto lo spazio rimanente nel frame contenente (expand=True)

per ulteriori informazioni consultare http://effbot.org/tkinterbook/pack.htm

4

Ecco un esempio:

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

questo fa una casella di testo e il sticky='ns' rende la barra di scorrimento andare fino in alto e in basso la finestra

+0

l'esempio trascura di impostare un peso sulla riga o sulla colonna, quindi probabilmente non verrà ridimensionato correttamente. –

4

soluzione facile da utilizzare una casella di testo con una barra di scorrimento integrato:

Python 3:

#Python 3 
import tkinter 
import tkinter.scrolledtext 

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

Per leggere il testo:

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

Naturalmente si può ridurre le importazioni, se si desidera.

In Python 2 è import ScrolledText invece.

+0

In Python 2 questo è: 'da ScrolledText importazione ScrolledText' ' ... '' text = ScrolledTex (tk) ' . –