采取这个简单的代码:
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()
结果行为是完全正常和预期的: 屏幕被分成两个相等的边
但是如果你改变
foo
到一个Entry小部件(并从网格中删除
sticky="nsew"
):
foo = tk.Entry(root_window, width=10) # same width
foo.grid(row=0, column=0)
然后条目小部件似乎在两侧都不知从何而来有了某种“填充”: 条目小部件似乎有额外的空间
我以为它有一个默认值
padx
,但即使在尝试
padx=(0,0)
之后,什么也没有发生。
它也只发生在它的两侧(左右),顶部和底部工作正常。
即使你在网格方法上使用
sticky="nsew"
,| ||结果还有额外的空格
我缺少什么吗?我可以删除这个“额外的填充”吗?
PS:我尝试使用 sintax 使图像出现在帖子上,而不是指向它们的链接,但无法使其工作。
PS: I tried using the sintax to make the images be on the post, instead of a link to them, but couldn't get it to work.
你看到的是 Entry 部件周围的默认 边框宽度 。这不是填充。边框宽度在视觉上将 Entry 部件的内容与其周围的部件隔开。
你可以使用
borderwidth
选项将其更改为 0 来删除此“额外填充”:
foo = tk.Entry(root_window, width=10, borderwidth=0)
foo.grid(row=0, column=0)
这将删除边框并使 Entry 部件紧挨着 Canvas 部件。
以下是一些需要牢记的额外说明:
-
padx
和pady
选项控制部件 内部 的填充,即文本与其边框之间的空间。 -
sticky
选项控制部件在其单元格内的对齐方式,但这不会影响边框宽度。
希望这有帮助!如果还有其他问题,请告诉我。
标签:python,tkinter,tkinter-entry From: 78800239