19

I am working on a project that requires me to underline some text in a Tkinter Label widget. I know that the underline method can be used, but I can only seem to get it to underline 1 character of the widget, based on the argument. i.e.

p = Label(root, text=" Test Label", bg='blue', fg='white', underline=0)

change underline to 0, and it underlines the first character, 1 the second etc

I need to be able to underline all the text in the widget, I'm sure this is possible, but how?

I am using Python 2.6 on Windows 7.

Zac Brown
  • 5,905
  • 19
  • 59
  • 107

8 Answers8

24

To underline all the text in a label widget you'll need to create a new font that has the underline attribute set to True. Here's an example:

try:
    import Tkinter as tk
    import tkFont
except ModuleNotFoundError:  # Python 3
    import tkinter as tk
    import tkinter.font as tkFont

class App:
    def __init__(self):
        self.root = tk.Tk()
        self.count = 0
        l = tk.Label(text="Hello, world")
        l.pack()
        # clone the font, set the underline attribute,
        # and assign it to our widget
        f = tkFont.Font(l, l.cget("font"))
        f.configure(underline = True)
        l.configure(font=f)
        self.root.mainloop()


if __name__ == "__main__":
    app = App()
martineau
  • 119,623
  • 25
  • 170
  • 301
Bryan Oakley
  • 370,779
  • 53
  • 539
  • 685
15

For those working on Python 3 and can't get the underline to work, here's example code to make it work.

from tkinter import font

# Create the text within a frame
pref = Label(checkFrame, text = "Select Preferences")
# Pack or use grid to place the frame
pref.grid(row = 0, sticky = W)
# font.Font instead of tkFont.Fon
f = font.Font(pref, pref.cget("font"))
f.configure(underline=True)
pref.configure(font=f)
drewkiimon
  • 591
  • 1
  • 9
  • 16
8

oneliner

mylabel = Label(frame, text = "my label", font="Verdana 15 underline")
Vignesh
  • 1,553
  • 1
  • 10
  • 25
5

Try this for underline:

mylbl=Label(Win,text='my Label',font=('Arial',9,'bold','underline'))
mylbl.grid(column=0,row=1)
Aryan Shirke
  • 51
  • 1
  • 2
3
p = Label(root, text=" Test Label", bg='blue', fg='white', font = 'helvetica 8 underline')

put your own font (i choose helvetica 8)

R2_CoderZ
  • 53
  • 2
2
mylabel = Label(frame, text = "my label")
mylabel.configure(font="Verdana 15 underline")
mihai
  • 4,592
  • 3
  • 29
  • 42
1

To underline all the characters you should import tkinter.font and make your own font style with this. Example-

from tkinter import *
from tkinter.font import Font
rt=Tk()
myfont=Font(family="Times",size=20,weight="bold", underline=1)
Label(rt,text="it is my GUI".title(),font=myfont,fg="green").pack()
rt.mainloop()
Angshuman
  • 11
  • 1
0

should be in this format:

dev_label=Label(Right_frame, text="purxxx@gmail.com", font=("Times",15,"bold italic underline"), fg="black",bg="white")

dev_label.place(x=80,y=120)

ami_PBJ
  • 63
  • 9
  • 1
    Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Jun 29 '22 at 04:43