欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

文本字段缺少底部和右边缘 文本框下边右边不见了 有大用 有大大用

见下面 红色的正确答案

我正在使用tkinter构建一个非常简单的用户界面,我正在使用一些文本字段,但它们似乎忽略了底部和右侧边缘\斜角(不确定正确的术语)。

这个小部件似乎有足够的空间来呈现,我在这里发帖是想看看这是预期的行为还是一个常见的\容易解决的问题。

我正在使用网格布局,并将小部件放入页面中,如下所示:

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之后,我意识到其中一些(raisedsunkenridgegroove)通过在一些边缘添加阴影,为边界提供了3D外观。这会产生一些边缘缺失的错觉。

另一方面,solid添加了一个统一的2D边框,flat添加了一个与小部件背景颜色相同的平面边框。


Solution:

如果希望所有边都可见,可以使用solid浮雕。此外,还可以通过更改bd的值来更改边框厚度。

airport_data_text = tk.Text(load_frame, height=1, width=50, bg="light grey", relief = "solid", bd = 1)

正在用 python 编写一个小程序来获得类似网格的效果,其中每个网格都是一个标签。

下面是我的代码:

from Tkinter import *

root = Tk()
root.configure(bg='black')

FRAME = Frame( bg='red')
FRAME.pack()

heading=["source","name","code","identity","source","name","code","identity"]
r1=[1,2,3,4,5,6,7,8]
r=0
c=0
for k in range(0,5):
    for i in  heading:
        lab = Label (FRAME,text = i,bg='cyan',padx='3.0m', pady='3.0m')

        lab.grid(row=r,column=c)
        c = c+1
    r=r+1
    c=0

root.mainloop()

我无法获取标签集的边框。请指定我应该合并哪个属性,我尝试使用边框宽度但没有成功。


最佳答案     正确答案 borderwidth  relief  

你说你无法设置标签的边框,但我在你的代码中没有看到你为标签定义边框的任何地方。

如果您想要实际标签小部件上的边框,请使用 borderwidthrelief选项:

lab = Label (..., borderwidth=1, relief="solid"

如果您想要每个小部件之间有一个空格,而不是小部件上的边框,以便背景显示出来,请使用 padxpady使用 grid 时的选项:

lab.grid(..., padx=1, pady=1)


关于python - tkinter 中的边框未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30838443/

来自  https://www.coder.work/article/4961088

https://stackoverflow.com/questions/30838443/borders-in-tkinter-not-getting-displayed  

普通分类: