TIP 681: Ttk "size"-related options

Author:		Jan Nijtmans <[email protected]>
State:		Final
Type:		Project
Vote:		Done
Created:	07-11-2023
Tcl-Version:	9.0
Tk-Branch:	gripsize
Vote-Summary:	Accepted 4/0/0
Votes-For:	FV, JN, KW, SL
Votes-Against:	none
Votes-Present:	none


The Ttk options related to sizes are not always named size. This TIP is meant to make those options consistent.


When Tk was made scalable (Thanks to Csaba!), a lot of ttk options changed from being integers (pixels) to floats (screen units). This work made it visible that some options were not named consistently. A major Tk release is a perfect excuse to correct this.

There is hardly any code around using those options. The only ones I found were scrollutil and tablelist from tklib (both from Csaba, and already adapted for this change) and azure-ttk, sum-valley-ttk and ttk-themes (still need to be adapted)

If you want to make your ttk widgets/styles work for both Tk 8.x and 9.0, the solution is to provide both options: ttk simply ignores any unknown options.

So in "ttk-themes", "-gripcount 16" should be changed to "-gripcount 16 -gripsize 24p". As a bonus, the grip will become scalable in Tk 9.0, while the code still works with Tk 8.6 too.


The following options are renamed: - -gripcount -> -gripsize (for sash items) - -indicatordiameter -> -indicatorsize (for indicators) - -diameter -> -size (for treeitem)

With respect to -gripcount/-gripsize, there's a factor 2 involved, so "-gripcount 5" is equivalent to "-gripsize 10" (or "-gripsize 7.5p", if you want to make it scalable). The other options are renamed, nothing more.

Implementation is in Tk branch "gripsize".

Since this is the first TIP brought into voting state for Tk 9.0, the renumbering from 8.7 -> 9.0 is also done in the implementation branch.


This document has been placed in the public domain.