簡體   English   中英

如何向 tkinter 標簽添加左邊框或右邊框

[英]how to add a left or right border to a tkinter Label

以下代碼

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()

產生

在此處輸入圖片說明

如何向Label添加部分邊框,以便我有

在此處輸入圖片說明

我看到borderwidth=Label一個可能選項,但它處理四個邊框。

注意:問題不是關於填充單元格(這是以前在重復評論中鏈接的答案的本質)

添加自定義邊框沒有選項或真正簡單的方法,但您可以做的是創建一個繼承自 Tkinter 的Frame類的類,該類創建一個包含LabelFrame 你只需要用你想要的邊框顏色給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 個像素的紅色邊框,您可以將其簡化一些。 希望有幫助。

我不相信有一種簡單的方法來添加左邊框。 但是,您絕對可以使用凹陷標簽來愚弄;)

例如:

root=Tk()
Label(root,text="hello").grid(row=1,column=1)
Label(root,text="world").grid(row=2,column=3)
Label(root,relief=SUNKEN,borderwidth=1,bg="red").grid(row=2,column=2)
Label(root).grid(row=2,column=1)
root.mainloop()

這將創建一個您想要看到的窗口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM