Tkinter Text Widget Background Color
Peter Otten
__peter__ at web.de
Tue Feb 22 12:14:34 EST 2011
Terry Reedy wrote:
> On 2/22/2011 6:50 AM, Peter Otten wrote:
>> import Tkinter as tk
>> from itertools import cycle
>>
>> root = tk.Tk()
>> text = tk.Text(root, font=("Helvetica", 70))
>> text.pack()
>>
>> text.insert(tk.END, "Hello, geocities")
>> text.tag_add("initial", "1.0", "1.1")
>> text.tag_add("initial", "1.7", "1.8")
>>
>> colors = cycle("red yellow blue".split())
>> initial_colors = cycle("#8f8 #f08".split())
>>
>> def switch_color():
>> # change the complete widget's background color
>> text["bg"] = next(colors)
>>
>> # change the background color of tagged portions
>> # of the widget's conten
>> text.tag_config("initial", background=next(initial_colors))
>>
>> # do it again after 300 milliseconds
>> root.after(300, switch_color)
>>
>> # call the color-setting function manually the first time
>> switch_color()
>> root.mainloop()
>
> This example is helpful to me. I am curious though why the tk window
> takes up the full screen instead of being much smaller as usual for
> other examples I run. Shortening or shrinking the text has no effect.
The text widget's intended usecase is editing text; therefore it reserves
space for 80 columns and 24 lines by default. Combined with the giant font
size that I specified that means that it takes a all the space it can get.
If you want to (ab)use a text widget to show its content you can specify the
desired size in units of character cells, e. g.
text = tk.Text(root, font=("Helvetica", 70), width=16, height=1)
See also
http://www.tcl.tk/man/tcl8.5/TkCmd/text.htm#M-height
Peter
More information about the Python-list
mailing list