First, is
<pre></pre> the coolest html tag ever?
I don't have to worry about non-breaking spaces or line-breaks
with pre-formatted text, I just copy and paste my code.
Second, in case you were wondering, I've added a some CSS for
inline and block code to my blogger posts. They're in this
Gist.
Third, here's a demo of scrollbars and listbox that resize
with
the window. The trick is in the row and column weights. Set it to a
positive number to resize, by using either
columnconfigure or
rowconfigure.
.png)
#! /usr/bin/env python
from Tkinter import *
from ttk import *
import calendar
root = Tk()
root.title('Listy')
master = Frame(root)
master.pack(expand=True, fill=BOTH)
master.columnconfigure(0, weight=1)
# keep scrollbar same width, ie don't resize!
master.columnconfigure(1, weight=0)
master.rowconfigure(0, weight=1)
# y-scrollbar
scrolly = Scrollbar(master, orient=VERTICAL)
scrolly.grid(row=0, column=1, sticky=N+S)
# listbox
listy = Listbox(master)
listy.grid(row=0, column=0, sticky=N+S+E+W)
# content
for m in calendar.month_name:
listy.insert(END, m)
for d in calendar.day_name:
listy.insert(END, d)
# bind scrollbar to listbox
listy.config(yscrollcommand=scrolly.set)
scrolly.config(command=listy.yview)
if __name__ == '__main__':
master.mainloop()
You could do this with the packer geometry manager, by using
pack(expand=YES, fill=BOTH)
for the listbox and
pack(fill=Y)
for the scrollbar. The trick is
expand
which causes the listbox to resize, but not the scrollbar.
#! /usr/bin/env python
from Tkinter import *
from ttk import *
import calendar
root = Tk()
root.title('Listy')
master = Frame(root)
master.pack(expand=True, fill=BOTH)
# y-scrollbar
scrolly = Scrollbar(master, orient=VERTICAL)
scrolly.pack(side=RIGHT, fill=Y)
# listbox
listy = Listbox(master)
listy.pack(side=LEFT, expand=YES, fill=BOTH)
# content
for m in calendar.month_name:
listy.insert(END, m)
for d in calendar.day_name:
listy.insert(END, d)
# bind scrollbar to listbox
listy.config(yscrollcommand=scrolly.set)
scrolly.config(command=listy.yview)
if __name__ == '__main__':
master.mainloop()