I have an OptionMenu and a Button in adjacent rows of the same column of a grid. I don't want the grid to manage the size of these widgets, because it can make the widgets much too wide. Instead, I would like for the OptionMenu and Button to be a fixed size - the maximum of the Button width, the OptionMenu width, and the widths of all menu entries. But I'm having trouble with this. The widths and heights of the OptionMenu and Button are initially 1, so I must first bind <Configure> to let the grid geometry manager inform me of the desired sizes. To prevent an infinite loop, I immediately unbind the event in the handler. I can then calculate the width of all the widgets in either pixels or text units. If I enforce the maximum width in the handler, I find that the OptionMenu "handle" adds a bit of width, so that the Button and OptionMenu widths are mismatched. This forces me to nest the OptionMenu and Button widgets within frames of their own (which in turn are within the grid). Then I pack the OptionMenu and Button to expand, but disable pack propagation on the frame. The idea is to set the width of the frame, and have the nested widgets expand to fill. Unfortunately the grid geometry manager informs my handler that the OptionMenu and Button now request 1x1 pixels of space, since pack propagation is disabled. Next I started from scratch. Where the OptionMenu and Button would be I placed a Frame with a rowspan of 2; the frame's contents also managed by a (nested) grid geometry manager. The frame is sticky="w"; it would shrink to fit its contents. The contents are sticky="ew"; they would fill to a uniform size. This works well, except that where text across columns of a single row would share a baseline, the nested grid geometry manager does not share baselines with the parent grid geometry manager. For example, the label text in the first column no longer shares a baseline with the OptionMenu text in the second column. Instead the baseline of the label text in the first column is now aligned with the bottom of the OptionMenu. How can I fix this? Continue reading...