文本字段缺少底部和右边缘
Missing bottom and right edge on text fields
我正在使用 tkinter
构建一个非常简单的 UI 我正在使用一些文本字段,但它们似乎缺少底部和右手 edging\bevel(不确定正确的术语)。
似乎有足够的 space 供小部件呈现,我在这里发帖是为了查看是否存在这种预期行为或 common\easily 可解决的问题。
我正在使用网格布局并将小部件放置到页面中,如下所示:
runway_data_label.grid(row=3, column=0, sticky="w")
runway_data_text = tk.Text(load_frame, height=1, width=50, bg="light grey")
runway_data_text.grid(row=3, column=1, sticky="w")
runway_data_text.config(state=tk.DISABLED)
这是显示我所说内容的屏幕截图。有些小部件的背景是灰色的,有些是白色的,但是两者的效果都很明显,无论我给小部件的大小如何,我都在效果最明显的地方用蓝色下划线。
这是一个最小的可重现示例,您可以在其中看到文本字段缺少底部和右边缘:
root = tk.Tk()
root.resizable(False,False)
root.title("Test")
root.geometry("600x600")
tab_control = ttk.Notebook(root)
tab_control.pack(expand = 1, fill ="both")
style = ttk.Style()
style.theme_use("default")
style.configure("TFrame", background="white")
style.configure("TLabel", background="white", font=("URW Gothic L", "10", "bold"))
style.configure("TButton", font=("URW Gothic L", "10", "bold"))
style.configure("TNotebook.Tab", background="grey", font=("URW Gothic L","10"))
style.map("TNotebook.Tab", background=[("selected", "white")], font=[("selected", "bold")])
load_tab = ttk.Frame(tab_control)
load_frame = ttk.Frame(load_tab, padding=(8,8,12,12))
airport_data_label = ttk.Label(load_frame, text="Data", width=15, anchor="w")
airport_data_label.grid(row=1, column=0, sticky="w")
airport_data_text = tk.Text(load_frame, height=1, width=50, bg="light grey")
airport_data_text.grid(row=1, column=1, sticky="w")
airport_data_text.config(state=tk.DISABLED)
airport_data_btn = tk.Button(load_frame, text="Open", command=lambda: print("Hello")).grid(row=1, column=2, sticky="w")
load_frame.pack()
tab_control.add(load_tab, text="Load Data")
root.mainloop()
这是来自 MRE 的屏幕截图:
仔细观察所有reliefs
后,我发现其中一些(raised
、sunken
、ridge
、groove
)给出了3D通过向某些边缘添加阴影来使边框看起来更美观。这给人一种缺失某些边缘的错觉。
另一方面,solid
添加统一的二维边框,flat
添加与小部件背景颜色相同的平面边框。
解决方案:
如果你想让所有的边缘都可见,你可以使用solid
浮雕。此外,您可以通过更改 bd
.
的值来更改边框粗细
airport_data_text = tk.Text(load_frame, height=1, width=50, bg="light grey", relief = "solid", bd = 1)
我正在使用 tkinter
构建一个非常简单的 UI 我正在使用一些文本字段,但它们似乎缺少底部和右手 edging\bevel(不确定正确的术语)。
似乎有足够的 space 供小部件呈现,我在这里发帖是为了查看是否存在这种预期行为或 common\easily 可解决的问题。
我正在使用网格布局并将小部件放置到页面中,如下所示:
runway_data_label.grid(row=3, column=0, sticky="w")
runway_data_text = tk.Text(load_frame, height=1, width=50, bg="light grey")
runway_data_text.grid(row=3, column=1, sticky="w")
runway_data_text.config(state=tk.DISABLED)
这是显示我所说内容的屏幕截图。有些小部件的背景是灰色的,有些是白色的,但是两者的效果都很明显,无论我给小部件的大小如何,我都在效果最明显的地方用蓝色下划线。
这是一个最小的可重现示例,您可以在其中看到文本字段缺少底部和右边缘:
root = tk.Tk()
root.resizable(False,False)
root.title("Test")
root.geometry("600x600")
tab_control = ttk.Notebook(root)
tab_control.pack(expand = 1, fill ="both")
style = ttk.Style()
style.theme_use("default")
style.configure("TFrame", background="white")
style.configure("TLabel", background="white", font=("URW Gothic L", "10", "bold"))
style.configure("TButton", font=("URW Gothic L", "10", "bold"))
style.configure("TNotebook.Tab", background="grey", font=("URW Gothic L","10"))
style.map("TNotebook.Tab", background=[("selected", "white")], font=[("selected", "bold")])
load_tab = ttk.Frame(tab_control)
load_frame = ttk.Frame(load_tab, padding=(8,8,12,12))
airport_data_label = ttk.Label(load_frame, text="Data", width=15, anchor="w")
airport_data_label.grid(row=1, column=0, sticky="w")
airport_data_text = tk.Text(load_frame, height=1, width=50, bg="light grey")
airport_data_text.grid(row=1, column=1, sticky="w")
airport_data_text.config(state=tk.DISABLED)
airport_data_btn = tk.Button(load_frame, text="Open", command=lambda: print("Hello")).grid(row=1, column=2, sticky="w")
load_frame.pack()
tab_control.add(load_tab, text="Load Data")
root.mainloop()
这是来自 MRE 的屏幕截图:
仔细观察所有reliefs
后,我发现其中一些(raised
、sunken
、ridge
、groove
)给出了3D通过向某些边缘添加阴影来使边框看起来更美观。这给人一种缺失某些边缘的错觉。
另一方面,solid
添加统一的二维边框,flat
添加与小部件背景颜色相同的平面边框。
解决方案:
如果你想让所有的边缘都可见,你可以使用solid
浮雕。此外,您可以通过更改 bd
.
airport_data_text = tk.Text(load_frame, height=1, width=50, bg="light grey", relief = "solid", bd = 1)