Skip to content

Commit e1847ea

Browse files
csabellaMariatta
authored andcommitted
bpo-25684: ttk.OptionMenu radiobuttons weren't unique (GH-2276) (GH-2960)
ttk.OptionMenu radiobuttons weren't unique between instances of OptionMenu. (cherry picked from commit a568e52)
1 parent ae16b99 commit e1847ea

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

Lib/lib-tk/test/test_ttk/test_extensions.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,31 @@ def cb_test(item):
284284

285285
optmenu.destroy()
286286

287+
def test_unique_radiobuttons(self):
288+
# check that radiobuttons are unique across instances (bpo25684)
289+
items = ('a', 'b', 'c')
290+
default = 'a'
291+
optmenu = ttk.OptionMenu(self.root, self.textvar, default, *items)
292+
textvar2 = tkinter.StringVar(self.root)
293+
optmenu2 = ttk.OptionMenu(self.root, textvar2, default, *items)
294+
optmenu.pack()
295+
optmenu.wait_visibility()
296+
optmenu2.pack()
297+
optmenu2.wait_visibility()
298+
optmenu['menu'].invoke(1)
299+
optmenu2['menu'].invoke(2)
300+
optmenu_stringvar_name = optmenu['menu'].entrycget(0, 'variable')
301+
optmenu2_stringvar_name = optmenu2['menu'].entrycget(0, 'variable')
302+
self.assertNotEqual(optmenu_stringvar_name,
303+
optmenu2_stringvar_name)
304+
self.assertEqual(self.root.tk.globalgetvar(optmenu_stringvar_name),
305+
items[1])
306+
self.assertEqual(self.root.tk.globalgetvar(optmenu2_stringvar_name),
307+
items[2])
308+
309+
optmenu.destroy()
310+
optmenu2.destroy()
311+
287312

288313
tests_gui = (LabeledScaleTest, OptionMenuTest)
289314

Lib/lib-tk/ttk.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1614,7 +1614,8 @@ def set_menu(self, default=None, *values):
16141614
menu.delete(0, 'end')
16151615
for val in values:
16161616
menu.add_radiobutton(label=val,
1617-
command=Tkinter._setit(self._variable, val, self._callback))
1617+
command=Tkinter._setit(self._variable, val, self._callback),
1618+
variable=self._variable)
16181619

16191620
if default:
16201621
self._variable.set(default)

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,6 +1229,7 @@ James Rutherford
12291229
Chris Ryland
12301230
Constantina S.
12311231
Matthieu S
1232+
Cheryl Sabella
12321233
Patrick Sabin
12331234
Sébastien Sablé
12341235
Suman Saha
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Change ``ttk.OptionMenu`` radiobuttons to be unique across instances of
2+
``OptionMenu``.

0 commit comments

Comments
 (0)