gpt4 book ai didi

python - 如何向 tkinter 标签添加左边框或右边框

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:20 25 4
gpt4 key购买 nike

代码如下

import Tkinter as tk

root = tk.Tk()
labelA = tk.Label(root, text="hello").grid(row=0, column=0)
labelB = tk.Label(root, text="world").grid(row=1, column=1)
root.mainloop()

产生

enter image description here

如何为 Label 添加部分边框,这样我就有了

enter image description here

我看到 borderwidth=possible option Label 但它处理四个边框。

注意:问题不在于填充单元格(这是 the answer that was formerly linked in the duplication comment 的本质)

最佳答案

没有添加自定义边框的选项或真正简单的方法,但您可以做的是创建一个继承自 Tkinter 的 Frame 类的类,该类创建一个 Frame 包含一个 Label。您只需使用所需的边框颜色为 Frame 着色,并使其比 Label 稍大,这样它就会呈现出边框的外观。

然后,您无需在需要时调用 Label 类,而是调用自定义 Frame 类的实例并指定您在该类中设置的参数。这是一个例子:

from Tkinter import *

class MyLabel(Frame):
'''inherit from Frame to make a label with customized border'''
def __init__(self, parent, myborderwidth=0, mybordercolor=None,
myborderplace='center', *args, **kwargs):
Frame.__init__(self, parent, bg=mybordercolor)
self.propagate(False) # prevent frame from auto-fitting to contents
self.label = Label(self, *args, **kwargs) # make the label

# pack label inside frame according to which side the border
# should be on. If it's not 'left' or 'right', center the label
# and multiply the border width by 2 to compensate
if myborderplace is 'left':
self.label.pack(side=RIGHT)
elif myborderplace is 'right':
self.label.pack(side=LEFT)
else:
self.label.pack()
myborderwidth = myborderwidth * 2

# set width and height of frame according to the req width
# and height of the label
self.config(width=self.label.winfo_reqwidth() + myborderwidth)
self.config(height=self.label.winfo_reqheight())


root=Tk()
MyLabel(root, text='Hello World', myborderwidth=4, mybordercolor='red',
myborderplace='left').pack()
root.mainloop()

如果您只需要每次都在右侧添加一个 4 像素的红色边框,您可以对其进行一些简化。希望对您有所帮助。

关于python - 如何向 tkinter 标签添加左边框或右边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23613677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com