Skip to content

Commit 2bf1586

Browse files
csabellaserhiy-storchaka
authored andcommitted
[3.6] bpo-25684: ttk.OptionMenu radiobuttons weren't unique (GH-2276) (#2959)
between instances of OptionMenu. (cherry picked from commit a568e52) * Update Misc/ACKS
1 parent 8c4e5be commit 2bf1586

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

Lib/tkinter/test/test_ttk/test_extensions.py

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

292292
optmenu.destroy()
293293

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

295320
tests_gui = (LabeledScaleTest, OptionMenuTest)
296321

Lib/tkinter/ttk.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1638,7 +1638,8 @@ def set_menu(self, default=None, *values):
16381638
menu.delete(0, 'end')
16391639
for val in values:
16401640
menu.add_radiobutton(label=val,
1641-
command=tkinter._setit(self._variable, val, self._callback))
1641+
command=tkinter._setit(self._variable, val, self._callback),
1642+
variable=self._variable)
16421643

16431644
if default:
16441645
self._variable.set(default)

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,6 +1340,7 @@ Chris Ryland
13401340
Bernt Røskar Brenna
13411341
Constantina S.
13421342
Matthieu S
1343+
Cheryl Sabella
13431344
Patrick Sabin
13441345
Sébastien Sablé
13451346
Amit 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)