@@ -221,13 +221,7 @@ def _draw(self, no_color_updates=False):
221221 self ._text_label .configure (bg = self ._apply_appearance_mode (self ._bg_color ))
222222
223223 def configure (self , require_redraw = False , ** kwargs ):
224- if "corner_radius" in kwargs :
225- self ._corner_radius = kwargs .pop ("corner_radius" )
226- require_redraw = True
227-
228- if "border_width" in kwargs :
229- self ._border_width = kwargs .pop ("border_width" )
230- require_redraw = True
224+ require_new_state = False
231225
232226 if "checkbox_width" in kwargs :
233227 self ._checkbox_width = kwargs .pop ("checkbox_width" )
@@ -239,22 +233,12 @@ def configure(self, require_redraw=False, **kwargs):
239233 self ._canvas .configure (height = self ._apply_widget_scaling (self ._checkbox_height ))
240234 require_redraw = True
241235
242- if "text" in kwargs :
243- self ._text = kwargs .pop ("text" )
244- self ._text_label .configure (text = self ._text )
245-
246- if "font" in kwargs :
247- if isinstance (self ._font , CTkFont ):
248- self ._font .remove_size_configure_callback (self ._update_font )
249- self ._font = self ._check_font_type (kwargs .pop ("font" ))
250- if isinstance (self ._font , CTkFont ):
251- self ._font .add_size_configure_callback (self ._update_font )
252-
253- self ._update_font ()
236+ if "corner_radius" in kwargs :
237+ self ._corner_radius = kwargs .pop ("corner_radius" )
238+ require_redraw = True
254239
255- if "state" in kwargs :
256- self ._state = kwargs .pop ("state" )
257- self ._set_cursor ()
240+ if "border_width" in kwargs :
241+ self ._border_width = kwargs .pop ("border_width" )
258242 require_redraw = True
259243
260244 if "fg_color" in kwargs :
@@ -281,27 +265,52 @@ def configure(self, require_redraw=False, **kwargs):
281265 self ._text_color_disabled = self ._check_color_type (kwargs .pop ("text_color_disabled" ))
282266 require_redraw = True
283267
268+ if "text" in kwargs :
269+ self ._text = kwargs .pop ("text" )
270+ self ._text_label .configure (text = self ._text )
271+
272+ if "font" in kwargs :
273+ if isinstance (self ._font , CTkFont ):
274+ self ._font .remove_size_configure_callback (self ._update_font )
275+ self ._font = self ._check_font_type (kwargs .pop ("font" ))
276+ if isinstance (self ._font , CTkFont ):
277+ self ._font .add_size_configure_callback (self ._update_font )
278+ self ._update_font ()
279+
280+ if "textvariable" in kwargs :
281+ self ._textvariable = kwargs .pop ("textvariable" )
282+ self ._text_label .configure (textvariable = self ._textvariable )
283+
284+ if "state" in kwargs :
285+ self ._state = kwargs .pop ("state" )
286+ self ._set_cursor ()
287+ require_redraw = True
288+
284289 if "hover" in kwargs :
285290 self ._hover = kwargs .pop ("hover" )
286291
287292 if "command" in kwargs :
288293 self ._command = kwargs .pop ("command" )
289294
290- if "textvariable" in kwargs :
291- self ._textvariable = kwargs .pop ("textvariable" )
292- self ._text_label .configure (textvariable = self ._textvariable )
295+ if "onvalue" in kwargs :
296+ self ._onvalue = kwargs .pop ("onvalue" )
297+ require_new_state = True
298+
299+ if "offvalue" in kwargs :
300+ self ._offvalue = kwargs .pop ("offvalue" )
301+ require_new_state = True
293302
294303 if "variable" in kwargs :
295304 if self ._variable is not None and self ._variable != "" :
296305 self ._variable .trace_remove ("write" , self ._variable_callback_name ) # remove old variable callback
297-
298306 self ._variable = kwargs .pop ("variable" )
299-
300307 if self ._variable is not None and self ._variable != "" :
301308 self ._variable_callback_name = self ._variable .trace_add ("write" , self ._variable_callback )
302- self ._check_state = True if self ._variable .get () == self ._onvalue else False
303- require_redraw = True
309+ require_new_state = True
304310
311+ if require_new_state and self ._variable is not None and self ._variable != "" :
312+ self ._check_state = True if self ._variable .get () == self ._onvalue else False
313+ require_redraw = True
305314 super ().configure (require_redraw = require_redraw , ** kwargs )
306315
307316 def cget (self , attribute_name : str ) -> any :
0 commit comments