mirror of
https://github.com/python/cpython.git
synced 2026-06-28 11:50:50 +00:00
gh-151920: Add the ttk.Style.theme_styles() method (GH-151921)
Wrap the Tk 9.0 ``ttk::style theme styles ?themeName?`` subcommand as ttk.Style.theme_styles(themename=None), returning the list of styles defined in a theme (the current theme if themename is omitted). Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
6cbb225c9e
commit
27148d0857
5 changed files with 53 additions and 2 deletions
|
|
@ -2016,6 +2016,16 @@ If you don't know the class name of a widget, use the method
|
|||
Returns a tuple of all known themes.
|
||||
|
||||
|
||||
.. method:: theme_styles(themename=None)
|
||||
|
||||
Returns a tuple of all styles in *themename*.
|
||||
If *themename* is not given, the current theme is used.
|
||||
|
||||
.. versionadded:: next
|
||||
|
||||
Availability: Tk 9.0.
|
||||
|
||||
|
||||
.. method:: theme_use(themename=None)
|
||||
|
||||
If *themename* is not given, returns the theme in use. Otherwise, sets
|
||||
|
|
|
|||
|
|
@ -173,6 +173,11 @@ tkinter
|
|||
synchronization of the displayed view with the underlying text.
|
||||
(Contributed by Serhiy Storchaka in :gh:`151675`.)
|
||||
|
||||
* Added the :meth:`ttk.Style.theme_styles
|
||||
<tkinter.ttk.Style.theme_styles>` method which returns the list of styles
|
||||
defined in a theme.
|
||||
(Contributed by Serhiy Storchaka in :gh:`151920`.)
|
||||
|
||||
* Added new :class:`!tkinter.Canvas` methods :meth:`~tkinter.Canvas.rchars`
|
||||
which replaces the text or coordinates of canvas items, and
|
||||
:meth:`~tkinter.Canvas.rotate` which rotates the coordinates of canvas items.
|
||||
|
|
@ -211,7 +216,6 @@ tkinter
|
|||
dithered image when its data was supplied in pieces.
|
||||
(Contributed by Serhiy Storchaka in :gh:`151888`.)
|
||||
|
||||
|
||||
xml
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@
|
|||
from test import support
|
||||
from test.support import requires
|
||||
from test.test_tkinter.support import setUpModule # noqa: F401
|
||||
from test.test_tkinter.support import AbstractTkTest, get_tk_patchlevel
|
||||
from test.test_tkinter.support import (AbstractTkTest, get_tk_patchlevel,
|
||||
requires_tk)
|
||||
|
||||
requires('gui')
|
||||
|
||||
|
|
@ -124,6 +125,25 @@ def test_theme_use(self):
|
|||
|
||||
self.style.theme_use(curr_theme)
|
||||
|
||||
@requires_tk(9, 0)
|
||||
def test_theme_styles(self):
|
||||
# The 'default' theme is always available and defines the base styles.
|
||||
default_styles = self.style.theme_styles('default')
|
||||
self.assertIsInstance(default_styles, tuple)
|
||||
self.assertIn('.', default_styles)
|
||||
self.assertIn('TButton', default_styles)
|
||||
|
||||
# Without an argument the current theme is used.
|
||||
styles = self.style.theme_styles()
|
||||
self.assertIsInstance(styles, tuple)
|
||||
self.assertIn('.', styles)
|
||||
|
||||
for theme in self.style.theme_names():
|
||||
self.assertIsInstance(self.style.theme_styles(theme), tuple)
|
||||
|
||||
self.assertRaises(tkinter.TclError,
|
||||
self.style.theme_styles, 'nonexistingname')
|
||||
|
||||
def test_theme_settings(self):
|
||||
style = self.style
|
||||
theme = style.theme_use()
|
||||
|
|
|
|||
|
|
@ -492,6 +492,20 @@ def theme_names(self):
|
|||
return self.tk.splitlist(self.tk.call(self._name, "theme", "names"))
|
||||
|
||||
|
||||
def theme_styles(self, themename=None):
|
||||
"""Returns a list of all styles in themename.
|
||||
|
||||
If themename is omitted, the current theme is used.
|
||||
|
||||
Availability: Tk 9.0.
|
||||
"""
|
||||
if themename is None:
|
||||
return self.tk.splitlist(
|
||||
self.tk.call(self._name, "theme", "styles"))
|
||||
return self.tk.splitlist(
|
||||
self.tk.call(self._name, "theme", "styles", themename))
|
||||
|
||||
|
||||
def theme_use(self, themename=None):
|
||||
"""If themename is None, returns the theme in use, otherwise, set
|
||||
the current theme to themename, refreshes all widgets and emits
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
Add the :meth:`ttk.Style.theme_styles <tkinter.ttk.Style.theme_styles>`
|
||||
method, wrapping the Tk ``ttk::style theme styles`` subcommand, which
|
||||
returns the list of styles defined in a theme.
|
||||
Loading…
Add table
Add a link
Reference in a new issue