如何仅向 tkinter 中的输入字段添加底部边框?
How to add only a bottom border to input fields in tkinter?
我正在制作一个登录软件,我希望输入字段只有底部边框,就像我们在 CSS 中那样。在 tkinter
中有什么方法可以做到这一点吗?
有几种方法可以做到这一点。可以说最简单的是关闭边框,然后使用 place
添加分隔符。您可以将其包装在 class 中,以便您可以像普通条目一样使用它。
这是一个简单的例子:
import tkinter as tk
from tkinter import ttk
class CustomEntry(tk.Entry):
def __init__(self, *args, **kwargs):
kwargs["borderwidth"] = 0
super().__init__(*args, **kwargs)
separator = ttk.Separator(orient="horizontal")
separator.place(in_=self, x=0, rely=1.0, height=2, relwidth=1.0)
root = tk.Tk()
style = ttk.Style()
print(style.layout("TEntry"))
print(style.layout("TSeparator"))
for row, field in enumerate(("First", "Last")):
label = tk.Label(root, text=field)
entry = CustomEntry(root, width=20, highlightthickness=0)
label.grid(row=row, column=0, sticky="e", padx=10, pady=4)
entry.grid(row=row, column=1, sticky="ew", padx=10, pady=4)
root.mainloop()
我正在制作一个登录软件,我希望输入字段只有底部边框,就像我们在 CSS 中那样。在 tkinter
中有什么方法可以做到这一点吗?
有几种方法可以做到这一点。可以说最简单的是关闭边框,然后使用 place
添加分隔符。您可以将其包装在 class 中,以便您可以像普通条目一样使用它。
这是一个简单的例子:
import tkinter as tk
from tkinter import ttk
class CustomEntry(tk.Entry):
def __init__(self, *args, **kwargs):
kwargs["borderwidth"] = 0
super().__init__(*args, **kwargs)
separator = ttk.Separator(orient="horizontal")
separator.place(in_=self, x=0, rely=1.0, height=2, relwidth=1.0)
root = tk.Tk()
style = ttk.Style()
print(style.layout("TEntry"))
print(style.layout("TSeparator"))
for row, field in enumerate(("First", "Last")):
label = tk.Label(root, text=field)
entry = CustomEntry(root, width=20, highlightthickness=0)
label.grid(row=row, column=0, sticky="e", padx=10, pady=4)
entry.grid(row=row, column=1, sticky="ew", padx=10, pady=4)
root.mainloop()