首页 > 解决方案 > 如何防止 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但我并没有真正看到任何变化。

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

标签: pythonuser-interfacetkinterfloating

解决方案


我在这里看到的唯一可能是问题(没有看到更多代码)是您如何使用grid_columnconfig(). 您只能将列/行配置应用于容器。这些将是root窗口、Toplevel()窗口或Frame. 您当前正在使用grid_columnconfigure(),这将起作用,但请注意,您也可以不columnconfigure()使用该grid_部分。行也是如此。

而不是这个:

finding_type_dropdown.grid_columnconfigure(0, weight=1)

做这个:

tab3_project_reports.grid_columnconfigure(0, weight=1)

推荐阅读