mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	window is created for every test class. Fixed Tkinter images copying operations in NoDefaultRoot mode. Tcl command names generated for "after" callbacks now contains a name of original function.
		
			
				
	
	
		
			92 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import unittest
 | 
						|
import tkinter
 | 
						|
from tkinter import ttk
 | 
						|
from test.support import requires, run_unittest
 | 
						|
from tkinter.test.support import AbstractTkTest
 | 
						|
 | 
						|
requires('gui')
 | 
						|
 | 
						|
class StyleTest(AbstractTkTest, unittest.TestCase):
 | 
						|
 | 
						|
    def setUp(self):
 | 
						|
        super().setUp()
 | 
						|
        self.style = ttk.Style(self.root)
 | 
						|
 | 
						|
 | 
						|
    def test_configure(self):
 | 
						|
        style = self.style
 | 
						|
        style.configure('TButton', background='yellow')
 | 
						|
        self.assertEqual(style.configure('TButton', 'background'),
 | 
						|
            'yellow')
 | 
						|
        self.assertIsInstance(style.configure('TButton'), dict)
 | 
						|
 | 
						|
 | 
						|
    def test_map(self):
 | 
						|
        style = self.style
 | 
						|
        style.map('TButton', background=[('active', 'background', 'blue')])
 | 
						|
        self.assertEqual(style.map('TButton', 'background'),
 | 
						|
            [('active', 'background', 'blue')] if self.wantobjects else
 | 
						|
            [('active background', 'blue')])
 | 
						|
        self.assertIsInstance(style.map('TButton'), dict)
 | 
						|
 | 
						|
 | 
						|
    def test_lookup(self):
 | 
						|
        style = self.style
 | 
						|
        style.configure('TButton', background='yellow')
 | 
						|
        style.map('TButton', background=[('active', 'background', 'blue')])
 | 
						|
 | 
						|
        self.assertEqual(style.lookup('TButton', 'background'), 'yellow')
 | 
						|
        self.assertEqual(style.lookup('TButton', 'background',
 | 
						|
            ['active', 'background']), 'blue')
 | 
						|
        self.assertEqual(style.lookup('TButton', 'optionnotdefined',
 | 
						|
            default='iknewit'), 'iknewit')
 | 
						|
 | 
						|
 | 
						|
    def test_layout(self):
 | 
						|
        style = self.style
 | 
						|
        self.assertRaises(tkinter.TclError, style.layout, 'NotALayout')
 | 
						|
        tv_style = style.layout('Treeview')
 | 
						|
 | 
						|
        # "erase" Treeview layout
 | 
						|
        style.layout('Treeview', '')
 | 
						|
        self.assertEqual(style.layout('Treeview'),
 | 
						|
            [('null', {'sticky': 'nswe'})]
 | 
						|
        )
 | 
						|
 | 
						|
        # restore layout
 | 
						|
        style.layout('Treeview', tv_style)
 | 
						|
        self.assertEqual(style.layout('Treeview'), tv_style)
 | 
						|
 | 
						|
        # should return a list
 | 
						|
        self.assertIsInstance(style.layout('TButton'), list)
 | 
						|
 | 
						|
        # correct layout, but "option" doesn't exist as option
 | 
						|
        self.assertRaises(tkinter.TclError, style.layout, 'Treeview',
 | 
						|
            [('name', {'option': 'inexistent'})])
 | 
						|
 | 
						|
 | 
						|
    def test_theme_use(self):
 | 
						|
        self.assertRaises(tkinter.TclError, self.style.theme_use,
 | 
						|
            'nonexistingname')
 | 
						|
 | 
						|
        curr_theme = self.style.theme_use()
 | 
						|
        new_theme = None
 | 
						|
        for theme in self.style.theme_names():
 | 
						|
            if theme != curr_theme:
 | 
						|
                new_theme = theme
 | 
						|
                self.style.theme_use(theme)
 | 
						|
                break
 | 
						|
        else:
 | 
						|
            # just one theme available, can't go on with tests
 | 
						|
            return
 | 
						|
 | 
						|
        self.assertFalse(curr_theme == new_theme)
 | 
						|
        self.assertFalse(new_theme != self.style.theme_use())
 | 
						|
 | 
						|
        self.style.theme_use(curr_theme)
 | 
						|
 | 
						|
 | 
						|
tests_gui = (StyleTest, )
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    run_unittest(*tests_gui)
 |