'Treeview moves after click on Combobox with Tkinter

I have developped a app in Python (tested with 3.8 and 3.9 on Windows 10) with Tkinter. I am using a Combobox and a Treeview. I want to change dynamically the width of dropdown listbox and I could do it by changing the style of TCombobox with the parameter postoffset.

However, everytime I click on the Combobox, the table next to it moves and extends its width by itself. I really don't know where this problem comes from.

I have created a simple code so that you can reproduce the problem.

import tkinter as tk
from tkinter import ttk
import tkinter.font as tkfont

def combo_configure(event, style):
    combo = event.widget
    long = max(combo.cget('values'), key=len)
    font = tkfont.Font(family="Helvetica", size=10)
    width = max(0,font.measure(long.strip() + '0') - combo.winfo_width())
    style.configure('TCombobox', postoffset=(0,0,width,0))

win = tk.Tk()
win.geometry("850x250")
style = ttk.Style()

f = tk.Frame(win)
f.configure(bg="black")
f.pack()

combo = ttk.Combobox(f, style="TCombobox", values=["It's a test on Combobox style."], width=10)
combo.bind('<ButtonPress>', lambda e : combo_configure(e, style))
combo.pack(side="left")

tree = ttk.Treeview(f, column=["Column 1"], show='headings', height=10)
tree.heading(0, text="Column 1")
tree.column(0, anchor=tk.CENTER, width=125)
tree.pack()

win.mainloop()

Thanks.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source