|
1 | 1 | import tkinter as tk |
2 | 2 | from configparser import ConfigParser |
3 | | - |
4 | 3 | from . import THEME |
5 | 4 |
|
6 | 5 | parser = ConfigParser() |
7 | 6 | parser.read(THEME) |
8 | 7 |
|
9 | 8 |
|
10 | | -class MetaWidget(type): |
11 | | - DEFAULTS = {} |
12 | | - |
13 | | - def __new__(cls, name, bases, namespace, **kwds): |
14 | | - for base in (cls,) + bases: |
15 | | - if hasattr(base, 'THEME'): |
16 | | - theme = parser[base.THEME] |
17 | | - kwds.update(theme) |
18 | | - break |
19 | | - |
20 | | - kwds.update(cls.DEFAULTS) |
21 | | - return super().__new__(cls, name, bases, namespace, **kwds) |
22 | | - |
| 9 | +class SecondaryFrame(tk.Frame): |
| 10 | + DEFAULT = {} |
23 | 11 |
|
24 | | -class Base(metaclass=MetaWidget): |
25 | | - THEME = 'base' |
26 | | - |
27 | | - def __init__(self, cls, *args, **kwds): |
28 | | - cls.__init__(*args, **kwds) |
| 12 | + def __init__(self, *args, **kwds): |
| 13 | + self.DEFAULT.update(kwds) |
| 14 | + super().__init__(*args, **self.DEFAULT) |
29 | 15 | if hasattr(self, 'init'): |
30 | 16 | self.init() |
31 | 17 |
|
32 | 18 |
|
33 | | -class Secondary(Base): |
34 | | - THEME = 'secondary' |
35 | | - |
36 | | - |
37 | | -class Primary(Base): |
38 | | - THEME = 'primary' |
39 | | - |
| 19 | +class SecondaryButton(tk.Button): |
| 20 | + DEFAULT = { |
| 21 | + 'height': 1, |
| 22 | + 'width': 10 |
| 23 | + } |
40 | 24 |
|
41 | | -class SecondaryFrame(tk.Frame, Secondary): |
42 | | - def __init__(self, *args, **kwargs): |
43 | | - super().__init__(*args, **kwargs) |
| 25 | + def __init__(self, *args, **kwds): |
| 26 | + self.DEFAULT.update(kwds) |
| 27 | + super().__init__(*args, **self.DEFAULT) |
44 | 28 | if hasattr(self, 'init'): |
45 | 29 | self.init() |
46 | 30 |
|
47 | 31 |
|
48 | | -class SecondaryButton(tk.Button, Secondary): |
49 | | - def __init__(self, *args, **kwargs): |
50 | | - super().__init__(*args, **kwargs) |
51 | | - if hasattr(self, 'init'): |
52 | | - self.init() |
| 32 | +class SecondaryLabel(tk.Label): |
| 33 | + DEFAULT = {} |
53 | 34 |
|
54 | | - |
55 | | -class SecondaryLabel(tk.Label, Secondary): |
56 | | - def __init__(self, *args, **kwargs): |
57 | | - super().__init__(*args, **kwargs) |
| 35 | + def __init__(self, *args, **kwds): |
| 36 | + self.DEFAULT.update(kwds) |
| 37 | + super().__init__(*args, **self.DEFAULT) |
58 | 38 | if hasattr(self, 'init'): |
59 | 39 | self.init() |
60 | 40 |
|
61 | 41 |
|
62 | | -class SecondaryCanvas(tk.Canvas, Secondary): |
63 | | - def __init__(self, *args, **kwargs): |
64 | | - super().__init__(*args, **kwargs) |
| 42 | +class SecondaryCanvas(tk.Canvas): |
| 43 | + DEFAULT = {} |
| 44 | + |
| 45 | + def __init__(self, *args, **kwds): |
| 46 | + self.DEFAULT.update(kwds) |
| 47 | + super().__init__(*args, **self.DEFAULT) |
65 | 48 | if hasattr(self, 'init'): |
66 | 49 | self.init() |
67 | 50 |
|
68 | 51 |
|
69 | | -class PrimaryFrame(tk.Frame, Primary): |
70 | | - def __init__(self, *args, **kwargs): |
71 | | - super().__init__(*args, **kwargs) |
| 52 | +class PrimaryFrame(tk.Frame): |
| 53 | + DEFAULT = {} |
| 54 | + |
| 55 | + def __init__(self, *args, **kwds): |
| 56 | + self.DEFAULT.update(kwds) |
| 57 | + super().__init__(*args, **self.DEFAULT) |
72 | 58 | if hasattr(self, 'init'): |
73 | 59 | self.init() |
74 | 60 |
|
75 | 61 |
|
76 | | -class PrimaryButton(tk.Button, Primary): |
77 | | - def __init__(self, *args, **kwargs): |
78 | | - super().__init__(*args, **kwargs) |
| 62 | +class PrimaryButton(tk.Button): |
| 63 | + DEFAULT = { |
| 64 | + 'height': 2, |
| 65 | + 'width': 10 |
| 66 | + } |
| 67 | + |
| 68 | + def __init__(self, *args, **kwds): |
| 69 | + self.DEFAULT.update(kwds) |
| 70 | + super().__init__(*args, **self.DEFAULT) |
79 | 71 | if hasattr(self, 'init'): |
80 | 72 | self.init() |
81 | 73 |
|
82 | 74 |
|
83 | | -class PrimaryLabel(tk.Label, Primary): |
84 | | - def __init__(self, *args, **kwargs): |
85 | | - super().__init__(*args, **kwargs) |
| 75 | +class PrimaryLabel(tk.Label): |
| 76 | + DEFAULT = {} |
| 77 | + |
| 78 | + def __init__(self, *args, **kwds): |
| 79 | + self.DEFAULT.update(kwds) |
| 80 | + super().__init__(*args, **self.DEFAULT) |
86 | 81 | if hasattr(self, 'init'): |
87 | 82 | self.init() |
88 | 83 |
|
89 | 84 |
|
90 | | -class PrimaryCanvas(tk.Canvas, Primary): |
91 | | - def __init__(self, *args, **kwargs): |
92 | | - super().__init__(*args, **kwargs) |
| 85 | +class PrimaryCanvas(tk.Canvas): |
| 86 | + DEFAULT = {} |
| 87 | + |
| 88 | + def __init__(self, *args, **kwds): |
| 89 | + self.DEFAULT.update(kwds) |
| 90 | + super().__init__(*args, **self.DEFAULT) |
93 | 91 | if hasattr(self, 'init'): |
94 | 92 | self.init() |
0 commit comments