Tkinter 的 Entry 小部件中的“额外填充”是什么?

问题描述 投票:0回答:1

采用这个简单的代码:

import os
import tkinter as tk

root_window = tk.Tk()
root_window.geometry("200x200")

root_window.columnconfigure(0, weight=1)
root_window.columnconfigure(1, weight=1)
root_window.rowconfigure(0, weight=1)

foo = tk.Canvas(root_window, bg="grey", width=10, height=10)
bar = tk.Canvas(root_window, bg="light grey", width=10, height=10)

foo.grid(row=0, column=0, sticky="nsew")
bar.grid(row=0, column=1, sticky="nsew")

root_window.mainloop()

由此产生的行为是完全正常且符合预期的:

screen gets divided into two equal sides

但是如果您将

foo
更改为 Entry 小部件(并从网格中删除
sticky="nsew"
):

foo = tk.Entry(root_window, width=10) # same width
foo.grid(row=0, column=0)

然后条目小部件似乎在两侧不知从何而来得到了某种“填充”:

entry widget appear to have extra space

我以为它有默认的

padx
,但即使尝试了
padx=(0,0)
,也没有发生任何事情。

它也只发生在其两侧(左右),顶部和底部工作正常。

即使你在网格方法上使用

sticky="nsew"
结果也有额外的空间

我有什么遗漏的吗?我可以删除这个“额外的填充”吗?

PS:我尝试使用 sintax 将图像放在帖子上,而不是链接到它们,但无法使其工作。

python tkinter tkinter-entry
1个回答
0
投票
最后一张图片中的

额外填充不是来自条目小部件,而是来自右侧的画布小部件。 创建时设置highlightthickness=0

即可删除:

bar = tk.Canvas(root_window, bg="light grey", width=10, height=10, highlightthickness=0)
结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.