如何防止 tkinter 中的浮动小部件 python

How to prevent floating widgets in tkinter python

我的 tkinter 应用程序有以下 UI。我的问题是带有长文本的 OptionsMenu 将所有其他小部件移到右侧并最终超出框架。

我能想到的解决方案: 1) 将文本换行到下一行。

2) StringVar 可以截断下拉列表的选定文本直到某些字符但不更改其存储的原始值(在下拉列表中选择)的方法。

3) 停止让它们浮动并重叠在其他小部件上。

这是不稳定行为的图片。

这是我的代码:查找类别下拉列表。

    if finding_names != []:
        finding_names.insert(0,'All')
        finding_type_select.set(finding_names[0])
        finding_type_dropdown = OptionMenu(tab3_project_reports,finding_type_select,*finding_names)
        finding_type_dropdown.configure(font='helvetica 12')
        finding_type_dropdown.grid(row=5, column=1,padx=10, pady=10,sticky=W+E+N+S)
        finding_type_dropdown.grid_columnconfigure(0, weight=1)

我也尝试过使用 grid_columnconfigure 但我并没有真正看到任何变化。

如有任何帮助,我将不胜感激。提前致谢。

我在这里看到的唯一可能是问题所在(没有看到更多代码)是您如何使用 grid_columnconfig()。您只能将 column/row 配置应用于容器。这些将是 root window、Toplevel() window 或 Frame。您当前使用的是 grid_columnconfigure(),这会起作用,但请注意,您也可以在没有 grid_ 部分的情况下只执行 columnconfigure()。行也是如此。

而不是这个:

finding_type_dropdown.grid_columnconfigure(0, weight=1)

这样做:

tab3_project_reports.grid_columnconfigure(0, weight=1)