python - 为什么 winfo_width() 返回的按钮小部件尺寸大于其实际尺寸?

标签 python python-3.x tkinter

我希望同一列中的按钮/标签与特定/第一个按钮/标签共享相同的宽度。问题是 winfo_width() 似乎没有返回我想要的。 winfo_width()的返回值是按钮的数倍。

我不想让宽度由我选择的数字固定。因此,我没有找到解决问题的办法。

这是我的部分代码:

button_1.update_idletasks()
print(button_1.winfo_width())
new_label = Label(frame_1, bg=  "#8432C7", width = 30, height = 5)
new_label.grid(row = 2, column = 0)

由于我没有 10 的声誉来发布图像,这里是生成界面的链接:

enter image description here

如果您能看到上图,您应该会发现下方的标签 (width = 30) 大于上方的按钮 (width = 157 ?)。

但是,根据我的尝试,157似乎不是button_1的宽度。我对 winfo_width() 在这里返回的内容感到困惑。因此,我想知道 winfo_width() 返回什么(为什么 winfo_width() 返回 157 应该小于 30)以及如何获得按钮的确切宽度。

最近刚开始学Tkinter,卡在这里一个小时。 提前感谢任何可以给我建议的人。

最佳答案

有趣的事实:您根本不必为此烦恼。

当您网格化您的小部件时,只需传递sticky:

import tkinter as tk

root = tk.Tk()

button_1 = tk.Button(root,text="button_1")
button_1.grid(row = 1, column = 0, sticky="ew")
new_label = tk.Label(root, bg=  "#8432C7", height = 5)
new_label.grid(row = 2, column = 0, sticky="ew")

root.mainloop()

然后您的列将自动调整并缩放到相同的大小。

关于python - 为什么 winfo_width() 返回的按钮小部件尺寸大于其实际尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56232031/

相关文章:

python - 如何在 python 中并行化大 for 循环

python - 有没有一种简单的方法可以将 Pandas 系列转换为系列中值的比率交叉表?

python-3.x - 如何在python 3.6中安装keras?

python - Tkinter:多显示器问题

python-3.x - 如何用一个滚动条滚动两个并行的文本小部件?

python - isAlive() 是否可以在调用 start() 后立即为 False 因为线程尚未启动?

python - 列表中的随机列表,不重复

django - 使用 WebSocketCommunicator 在 Django Channels v2 测试中进行身份验证

python - 无法通过python路径访问python文件

Python Tkinter : OptionMenu modify dropdown list width