mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
gh-130482: Add ability to specify name for tkinter.OptionMenu and tkinter.ttk.OptionMenu (GH-130502)
This commit is contained in:
parent
1e9cc3d502
commit
e490c00dac
6 changed files with 19 additions and 2 deletions
|
@ -1372,6 +1372,9 @@ tkinter
|
||||||
arguments passed by keyword.
|
arguments passed by keyword.
|
||||||
(Contributed by Zhikang Yan in :gh:`126899`.)
|
(Contributed by Zhikang Yan in :gh:`126899`.)
|
||||||
|
|
||||||
|
* Add ability to specify name for :class:`!tkinter.OptionMenu` and
|
||||||
|
:class:`!tkinter.ttk.OptionMenu`.
|
||||||
|
(Contributed by Zhikang Yan in :gh:`130482`.)
|
||||||
|
|
||||||
turtle
|
turtle
|
||||||
------
|
------
|
||||||
|
|
|
@ -354,6 +354,11 @@ class OptionMenuTest(MenubuttonTest, unittest.TestCase):
|
||||||
with self.assertRaisesRegex(TclError, r"^unknown option -image$"):
|
with self.assertRaisesRegex(TclError, r"^unknown option -image$"):
|
||||||
tkinter.OptionMenu(self.root, None, 'b', image='')
|
tkinter.OptionMenu(self.root, None, 'b', image='')
|
||||||
|
|
||||||
|
def test_specify_name(self):
|
||||||
|
widget = tkinter.OptionMenu(self.root, None, ':)', name="option_menu")
|
||||||
|
self.assertEqual(str(widget), ".option_menu")
|
||||||
|
self.assertIs(self.root.children["option_menu"], widget)
|
||||||
|
|
||||||
@add_configure_tests(IntegerSizeTests, StandardOptionsTests)
|
@add_configure_tests(IntegerSizeTests, StandardOptionsTests)
|
||||||
class EntryTest(AbstractWidgetTest, unittest.TestCase):
|
class EntryTest(AbstractWidgetTest, unittest.TestCase):
|
||||||
_rounds_pixels = (tk_version < (9, 0))
|
_rounds_pixels = (tk_version < (9, 0))
|
||||||
|
|
|
@ -319,6 +319,12 @@ class OptionMenuTest(AbstractTkTest, unittest.TestCase):
|
||||||
textvar.trace_remove("write", cb_name)
|
textvar.trace_remove("write", cb_name)
|
||||||
optmenu.destroy()
|
optmenu.destroy()
|
||||||
|
|
||||||
|
def test_specify_name(self):
|
||||||
|
textvar = tkinter.StringVar(self.root)
|
||||||
|
widget = ttk.OptionMenu(self.root, textvar, ":)", name="option_menu_ex")
|
||||||
|
self.assertEqual(str(widget), ".option_menu_ex")
|
||||||
|
self.assertIs(self.root.children["option_menu_ex"], widget)
|
||||||
|
|
||||||
|
|
||||||
class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase):
|
class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase):
|
||||||
|
|
||||||
|
|
|
@ -4199,7 +4199,7 @@ class OptionMenu(Menubutton):
|
||||||
keyword argument command."""
|
keyword argument command."""
|
||||||
kw = {"borderwidth": 2, "textvariable": variable,
|
kw = {"borderwidth": 2, "textvariable": variable,
|
||||||
"indicatoron": 1, "relief": RAISED, "anchor": "c",
|
"indicatoron": 1, "relief": RAISED, "anchor": "c",
|
||||||
"highlightthickness": 2}
|
"highlightthickness": 2, "name": kwargs.pop("name", None)}
|
||||||
Widget.__init__(self, master, "menubutton", kw)
|
Widget.__init__(self, master, "menubutton", kw)
|
||||||
self.widgetName = 'tk_optionMenu'
|
self.widgetName = 'tk_optionMenu'
|
||||||
menu = self.__menu = Menu(self, name="menu", tearoff=0)
|
menu = self.__menu = Menu(self, name="menu", tearoff=0)
|
||||||
|
|
|
@ -1603,7 +1603,8 @@ class OptionMenu(Menubutton):
|
||||||
A callback that will be invoked after selecting an item.
|
A callback that will be invoked after selecting an item.
|
||||||
"""
|
"""
|
||||||
kw = {'textvariable': variable, 'style': kwargs.pop('style', None),
|
kw = {'textvariable': variable, 'style': kwargs.pop('style', None),
|
||||||
'direction': kwargs.pop('direction', None)}
|
'direction': kwargs.pop('direction', None),
|
||||||
|
'name': kwargs.pop('name', None)}
|
||||||
Menubutton.__init__(self, master, **kw)
|
Menubutton.__init__(self, master, **kw)
|
||||||
self['menu'] = tkinter.Menu(self, tearoff=False)
|
self['menu'] = tkinter.Menu(self, tearoff=False)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Add ability to specify name for :class:`!tkinter.OptionMenu` and
|
||||||
|
:class:`!tkinter.ttk.OptionMenu`.
|
Loading…
Add table
Add a link
Reference in a new issue