ttk::checkbutton and ttk::radiobutton are supposed to show an undetermined state, when the associated variable is unset. For native themes under windows and macosx, this works fine. For non-native themes, the buttons switch to the alternate state, but there is no visual difference. On X11, every possible theme is affected (all are non-native).
The attached script shows the problem
Script that displays on, off and 3state buttons for different themes
Screenshot for themes aqua and clam
Updated test that shows all 6 states
Patch for default and clam theme
Screen shot with aqua, default(unpatched) and clam&default(patched)
I have made a patch to implement the changes as suggested by Jeff Hobbs. The test script was also updated to show all 6 possible widget states: Checkeed, unchecked, and alternate state, at both enabled and disabled states.
All of these are cleary distinguishable under the native aqua theme, but fail to be distinguished under the Tk drawn themes, For the default theme, I'm pretty confident with the solution as-is.
But for clam, I was not able to set a different style for the disabled alternate state. Moreover, I could not understand how the checkmark is drawn - I expected to see some bitmap embedded in the style code. This way, one could draw a different symbol analogous to aqua for the themes with checkmarks, i.e. alt and clam.