@@ -1612,6 +1612,17 @@ def get_prev_element(
16121612 return None
16131613 return self .prev_element
16141614
1615+ def is_disabled (self ) -> bool :
1616+ """Check if the widget is disabled."""
1617+ if self .widget is not None :
1618+ try :
1619+ state = self .widget .cget ("state" )
1620+ if state == "disabled" :
1621+ return True
1622+ except tk .TclError :
1623+ pass
1624+ return False
1625+
16151626 def __getattr__ (self , name : str ) -> Any :
16161627 """Get unknown attribute."""
16171628 # Method called when the attribute is not found in the object's instance dictionary
@@ -4729,9 +4740,15 @@ def show_dialog(self, *args) -> Union[Any, None]:
47294740 """Show file dialog"""
47304741 from . import dialogs
47314742
4743+ # return if state is disabled (#146)
4744+ if self .is_disabled ():
4745+ return None
4746+
47324747 target : Union [Element , None ] = self .get_prev_element (self .target_key )
4748+
47334749 # get initial directory
47344750 init_dir = self ._get_initial_directory ()
4751+
47354752 # popup
47364753 result = dialogs .popup_get_file (
47374754 title = self .title ,
@@ -4749,6 +4766,7 @@ def show_dialog(self, *args) -> Union[Any, None]:
47494766 self .window .dispatch_event (
47504767 self .key , {"event" : result , "event_type" : "change" }
47514768 )
4769+
47524770 return result
47534771
47544772 def set_text (self , text : str ) -> None :
@@ -4852,6 +4870,10 @@ def show_dialog(self, *args) -> Union[str, None]:
48524870 """Show file dialog"""
48534871 from . import dialogs
48544872
4873+ # return if state is disabled (#146)
4874+ if self .is_disabled ():
4875+ return None
4876+
48554877 target : Union [Element , None ] = self .get_prev_element (self .target_key )
48564878 # popup
48574879 result = dialogs .popup_get_folder (
@@ -4895,6 +4917,10 @@ def show_dialog(self, *args) -> Union[str, None]:
48954917 """Show file dialog"""
48964918 from . import dialogs
48974919
4920+ # return if state is disabled (#146)
4921+ if self .is_disabled ():
4922+ return None
4923+
48984924 target : Union [Element , None ] = self .get_prev_element (self .target_key )
48994925 # popup
49004926 result = dialogs .popup_color (
@@ -4944,6 +4970,10 @@ def show_dialog(self, *args) -> Union[str, None]:
49444970 """Show Listbox dialog"""
49454971 from . import dialogs
49464972
4973+ # return if state is disabled (#146)
4974+ if self .is_disabled ():
4975+ return None
4976+
49474977 target : Union [Element , None ] = self .get_prev_element (self .target_key )
49484978 if target is not None :
49494979 val = target .get () # type: ignore[attr-defined]
@@ -4996,6 +5026,9 @@ def show_dialog(self, *args) -> Union[str, None]:
49965026 """Show Listbox dialog"""
49975027 from . import dialogs
49985028
5029+ if self .is_disabled ():
5030+ return None
5031+
49995032 target : Union [Element , None ] = self .get_prev_element (self .target_key )
50005033 if target is not None :
50015034 val = target .get () # type: ignore[attr-defined]
@@ -5057,6 +5090,9 @@ def show_dialog(self, *args) -> Union[datetime, None]:
50575090 """Show file dialog"""
50585091 from . import dialogs
50595092
5093+ if self .is_disabled ():
5094+ return None
5095+
50605096 target : Union [Element , None ] = self .get_prev_element (self .target_key )
50615097 # popup
50625098 result = dialogs .popup_get_date (
0 commit comments