bpo-25684: ttk.OptionMenu radiobuttons weren't unique (GH-2276) (GH-2… · python/cpython@e1847ea (original) (raw)

4 files changed

lines changed

Original file line number Diff line number Diff line change
@@ -284,6 +284,31 @@ def cb_test(item):
284 284
285 285 optmenu.destroy()
286 286
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 +
287 312
288 313 tests_gui = (LabeledScaleTest, OptionMenuTest)
289 314
Original file line number Diff line number Diff line change
@@ -1614,7 +1614,8 @@ def set_menu(self, default=None, *values):
1614 1614 menu.delete(0, 'end')
1615 1615 for val in values:
1616 1616 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)
1618 1619
1619 1620 if default:
1620 1621 self._variable.set(default)
Original file line number Diff line number Diff line change
@@ -1229,6 +1229,7 @@ James Rutherford
1229 1229 Chris Ryland
1230 1230 Constantina S.
1231 1231 Matthieu S
1232 +Cheryl Sabella
1232 1233 Patrick Sabin
1233 1234 Sébastien Sablé
1234 1235 Suman Saha
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
1 +Change ``ttk.OptionMenu`` radiobuttons to be unique across instances of
2 +``OptionMenu``.