Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Adding borders to ttk radiobuttons

177 views
Skip to first unread message

Mark Lawrence

unread,
Mar 30, 2016, 9:15:05 AM3/30/16
to
I believe something like this should suffice to display borders around
the radiobuttons.

import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
style = ttk.Style()
style.configure('BW.TRadiobutton', borderwidth=5)
buttonVar = tk.IntVar()
rb1 = ttk.Radiobutton(text='Hello mum', variable=buttonVar, value=1)
rb1.configure(style='BW.TRadiobutton')
rb1.grid(row=0, column=0)
rb2 = ttk.Radiobutton(text='Hello dad', variable=buttonVar, value=2)
rb2.configure(style='BW.TRadiobutton')
rb2.grid(row=1, column=0)
root.mainloop()

Sadly no borders :( What have I missed? Python 3.5.1 on Windows 10.

--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence

ast

unread,
Mar 30, 2016, 10:45:59 AM3/30/16
to

"Mark Lawrence" <bream...@yahoo.co.uk> a écrit dans le message de
news:mailman.204.14593436...@python.org...
>I believe something like this should suffice to display borders around the radiobuttons.
>
> import tkinter as tk
> import tkinter.ttk as ttk
> root = tk.Tk()
> style = ttk.Style()
> style.configure('BW.TRadiobutton', borderwidth=5)
> buttonVar = tk.IntVar()
> rb1 = ttk.Radiobutton(text='Hello mum', variable=buttonVar, value=1)
> rb1.configure(style='BW.TRadiobutton')
> rb1.grid(row=0, column=0)
> rb2 = ttk.Radiobutton(text='Hello dad', variable=buttonVar, value=2)
> rb2.configure(style='BW.TRadiobutton')
> rb2.grid(row=1, column=0)
> root.mainloop()
>
> Sadly no borders :( What have I missed? Python 3.5.1 on Windows 10.
>

it seems there is no border on the radio button

> style.layout('BW.TRadiobutton')

[('Radiobutton.padding', {'children': [('Radiobutton.indicator', {'side': 'left', 'sticky': ''}),
('Radiobutton.focus', {'side': 'left', 'sticky': '', 'children': [('Radiobutton.label', {'sticky':
'nswe'})]})], 'sticky': 'nswe'})]

ast

unread,
Mar 30, 2016, 10:56:19 AM3/30/16
to

"ast" <nom...@com.invalid> a écrit dans le message de news:56fbe699$0$4548$426a...@news.free.fr...
for more help:
http://www.tkdocs.com/tutorial/styles.html

Mark Lawrence

unread,
Mar 30, 2016, 11:01:42 AM3/30/16
to
That's as may be, but from Table 56 "ttk Radiobutton options not in
ttk.Radiobutton" here
http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Radiobutton.html
it says "borderwidth or bd - Configure this option using a style."

Mark Lawrence

unread,
Mar 30, 2016, 11:14:55 AM3/30/16
to
For this particular problem not of much use, or I wouldn't be asking :(

Terry Reedy

unread,
Mar 30, 2016, 12:36:22 PM3/30/16
to
On 3/30/2016 11:01 AM, Mark Lawrence via Python-list wrote:
> On 30/03/2016 15:45, ast wrote:
>>
> That's as may be, but from Table 56 "ttk Radiobutton options not in
> ttk.Radiobutton" here
> http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Radiobutton.html
> it says "borderwidth or bd - Configure this option using a style."

Components depend on the theme. In some themes, Radiobutton does have a
border. On Windows 10, I ran

>>> for s in style.theme_names():
style.theme_use(s)
style.theme_use()
style.layout('TRadiobutton')

Theme names are ('winnative', 'clam', 'alt', 'default', 'classic',
'vista', 'xpnative') with 'vista'the default. Outputs were the same as above

'vista'
[('Radiobutton.padding', {'sticky': 'nswe', 'children':
[('Radiobutton.indicator', {'sticky': '', 'side': 'left'}),
('Radiobutton.focus', {'sticky': '', 'children':
[('Radiobutton.label', {'sticky': 'nswe'})], 'side': 'left'})]})]

except for this

'classic'
[('Radiobutton.highlight', {'sticky': 'nswe', 'children':
[('Radiobutton.border', {'sticky': 'nswe', 'children':
[('Radiobutton.padding', {'sticky': 'nswe', 'children':
[('Radiobutton.indicator', {'sticky': '', 'side': 'left'}),
('Radiobutton.label', {'sticky': 'nswe', 'side': 'left'})]})]})]})]

.theme_names() only displays the themes for the OS. I believe that
there is a way to access themes for other OSes (unix, mac) but don't
remember.

--
Terry Jan Reedy


Terry Reedy

unread,
Mar 30, 2016, 12:40:25 PM3/30/16
to
On 3/30/2016 11:14 AM, Mark Lawrence via Python-list wrote:
> For this particular problem not of much use, or I wouldn't be asking :(

This page has some of the info needed to get a radiobutton with a
border, at least my machine. See my answer to your other response.

--
Terry Jan Reedy


Mark Lawrence

unread,
Mar 30, 2016, 7:41:54 PM3/30/16
to
On 30/03/2016 17:35, Terry Reedy wrote:
>
> .theme_names() only displays the themes for the OS. I believe that
> there is a way to access themes for other OSes (unix, mac) but don't
> remember.
>

Possibly http://bugs.python.org/issue17397 which refers to
http://code.activestate.com/lists/python-tkinter-discuss/3373/ ?
0 new messages