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``. |