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.
#! /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()
No comments:
Post a Comment