在文本框中围绕文本制作矩形边框 python tkinter

Making a rectangle border around text in Textbox python tkinter

我想在从末尾添加到文本框的某些文本周围添加一个矩形边框,并将放置在中心。

例如:

不幸的是,我找不到办法做到这一点,因为我 不知道如何将文本放在文本框中行的中心,也不知道如何用矩形包围文本。

尝试将文本框放入它自己的框架中。

像这样的事情:

from Tkinter import *
root = Tk()

labelframe = LabelFrame(root, text="LabelFrame")
labelframe.pack()

text = Label(labelframe, text="Text inside labelframe")
text.pack()

root.mainloop()

您可以使用 relief = "solid" 为条目添加边框,使用 outline 使文本居中,您可以使用 grid 以您想要的方式对齐小部件。

import tkinter as tk

root = tk.Tk()
root.geometry("400x200")
root.grid_columnconfigure(0, weight = 1)

ent1 = tk.Entry(root, relief = "solid", justify = "center")
ent1.insert(0, "hello")
ent1.grid(row = 0, column = 0, pady = 10)

ent2 = tk.Entry(root, relief = "solid", justify = "center")
ent2.insert(0, ".......")
ent2.grid(row = 1, column = 0, pady = 10)

lab1 = tk.Label(root, text = "hello")
lab1.grid(row = 2, column = 0, sticky = "w")

lab2 = tk.Label(root, text = "hello")
lab2.grid(row = 3, column = 0, sticky = "w")

root.mainloop()

大部分内容都很简单,root.grid_columnconfigure 行通过为第一列赋予 1 的权重使网格占据根 window 的整个宽度。结果非常类似于你的例子:

您可以在 Text 小部件中用 justify='center'Label 与 space 和换行符之间的边框包裹起来。

下面是一个例子:

import tkinter as tk

root = tk.Tk()

textbox = tk.Text(root, width=30, height=10)
textbox.pack()

textbox.tag_config('center', justify='center')

def center_label(textbox, **kwargs):
    textbox.insert('end', ' ', 'center')
    lbl = tk.Label(textbox, bd=3, relief='solid', **kwargs)
    textbox.window_create('end', window=lbl)
    textbox.insert('end', '\n\n')

center_label(textbox, text='hello', width=10, font='Arial 12 bold')
center_label(textbox, text='............', width=20)

textbox.insert('end', '\nhello\n')

root.mainloop()

结果: