Thus spoketh pyt...@bdurham.com unto us on Fri, 17 Dec 2010 09:00:08 -0500:
> I understand that Tkinter frames do not have a property that > allows their border color to be customized. > > Here are some high level ideas I have on how to create a colored > border effect - any suggestions on best practice appreciated. > > 1. Turn off the frame's border. Enclose the frame in a parent > frame also without a border. Set the parent frame's background > color to the color of the border you want. Make sure the parent > frame's layout options (grid/pack) match the inner frame's > options. > > 2. Use a canvas instead of a frame, draw a border using the > create_rectangle( ..., fill="<frame backgroundcolor>" ), and then > bind to the canvas's <Config>(?) event and to delete and redraw > the border every time the canvas resizes. > > 3. Use a tk.call( ... ) to gain access to the TCL interpreter and > its richer set of capabilies? > > Regarding options 2 and 3: Might there be a way to create > non-solid border styles, eg. borders that are composed of dots or > dashes? I don't think there are such options in Tk by default, so 3. probably is not an option (unless you do very fancy things with ttk styles, but these are probably also possible with the ttk module). With a canvas you can try something like: ################### from Tkinter import * root = Tk() root.geometry('500x500') c = Canvas(root, bg='yellow', bd=0, highlightthickness=0, takefocus=0) c.pack(fill='both', expand=1, padx=100, pady=100) c.update_idletasks() w, h = c.winfo_width(), c.winfo_height() r = c.create_rectangle(0, 0, w-1, h-1, outline='red', fill='', dash=(5,5)) f = Frame(c, width=w-2, height=h-2) w = c.create_window(1, 1, window=f, anchor='nw') def foo(event): w, h = event.width, event.height event.widget.coords(r, 0, 0, w-1, h-1) f.configure(width=w-2, height=h-2) c.bind('<Configure>', foo) root.mainloop() ################### This seems to werk ok, I'm not sure if this might break in some situations though. Regards Michael .-.. .. ...- . .-.. --- -. --. .- -. -.. .--. .-. --- ... .--. . .-. The only solution is ... a balance of power. We arm our side with exactly that much more. A balance of power -- the trickiest, most difficult, dirtiest game of them all. But the only one that preserves both sides. -- Kirk, "A Private Little War", stardate 4211.8 _______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org http://mail.python.org/mailman/listinfo/tkinter-discuss