在文本框中围绕文本制作矩形边框 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()
结果:
我想在从末尾添加到文本框的某些文本周围添加一个矩形边框,并将放置在中心。
例如:
不幸的是,我找不到办法做到这一点,因为我 不知道如何将文本放在文本框中行的中心,也不知道如何用矩形包围文本。
尝试将文本框放入它自己的框架中。
像这样的事情:
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()
结果: