webentwicklung-frage-antwort-db.com.de

Rahmen für tkinter Label

Nicht wirklich relevant, aber ich baue einen Kalender und ich habe viele Label-Widgets. Daher würde es viel schöner aussehen, wenn ich ein paar Grenzen dafür hätte!

Ich habe gesehen, dass Sie dies für andere Widgets wie Button, Entry und Text tun können.

Minimaler Code:

from tkinter import *

root = Tk()

L1 = Label(root, text="This")
L2 = Label(root, text="That")

L1.pack()
L2.pack()

Ich habe das Einstellen versucht

highlightthickness=4
highlightcolor="black"
highlightbackground="black"
borderwidth=4

im Widget, aber immer noch das gleiche Ergebnis.

 example pic tkinter

Ist das überhaupt möglich? Vielen Dank!

10
Pax Vobiscum

Wenn Sie einen Rand wünschen, ist die Option borderwidth. Sie können auch das Relief des Randes auswählen: "flat", "raised", "sunken", "ridge", "solid" und "groove".

Zum Beispiel:

l1 = Label(root, text="This", borderwidth=2, relief="groove")

Hinweis: "ridge" und "groove" benötigen mindestens zwei Pixel Breite, um richtig dargestellt zu werden

 examples of tkinter borders

32
Bryan Oakley

Die Zusammenfassung:

Lbl1 = Label(relief=GROOVE).pack()
0
ForceVII

@Pax Vobiscum - Eine Möglichkeit, dies zu tun, besteht darin, ein Widget zu nehmen und einen Rahmen mit einer Farbe hinter das Widget zu werfen. Tkinter kann trotz seiner Nützlichkeit ein bisschen primitiv sein. Eine bordercolor-Option wäre für jedes Widget-Toolkit logisch, aber es scheint nicht so zu sein.

from Tkinter import *

root = Tk()
topframe = Frame(root, width = 300, height = 900)
topframe.pack()

frame = Frame(root, width = 202, height = 32, highlightbackground="black", highlightcolor="black", highlightthickness=1, bd=0)
l = Entry(frame, borderwidth=0, relief="flat", highlightcolor="white")
l.place(width=200, height=30)
frame.pack
frame.pack()
frame.place(x = 50, y = 30)

Ein Beispiel, das diese Methode verwendet, könnte das Erstellen einer Tabelle sein:

from Tkinter import *

def EntryBox(root_frame, w, h):
    boxframe = Frame(root_frame, width = w+2, height= h+2, highlightbackground="black", highlightcolor="black", highlightthickness=1, bd=0)
    l = Entry(boxframe, borderwidth=0, relief="flat", highlightcolor="white")
    l.place(width=w, height=h)
    l.pack()
    boxframe.pack()
    return boxframe

root = Tk()
frame = Frame(root, width = 1800, height = 1800)
frame.pack()

labels = []

for i in range(16):
    for j in range(16):
        box = EntryBox(frame, 40, 30)
        box.place(x = 50 + i*100, y = 30 + j*30 , width = 100, height = 30)
        labels.append(box)
0
Xofo