Подчеркнуть текст в виджете Tkinter Label? - PullRequest
11 голосов
/ 07 сентября 2010

Я работаю над проектом, который требует от меня подчеркнуть некоторый текст в виджете Tkinter Label.Я знаю, что можно использовать метод подчеркивания, но я могу только заставить его подчеркнуть 1 символ виджета на основе аргумента.т.е.

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

Мне нужно иметь возможность подчеркнуть весь текст в виджете, я уверен, что это возможно, но как?

Я использую Python 2.6 в Windows 7.

Ответы [ 2 ]

14 голосов
/ 07 сентября 2010

Чтобы подчеркнуть весь текст в виджете метки, вам нужно создать новый шрифт с атрибутом подчеркивания, установленным в True.Вот пример:

import Tkinter as tk
import 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()
6 голосов
/ 03 июля 2017

Для тех, кто работает над Python 3 и не может заставить работать подчеркивание, вот пример кода, чтобы заставить его работать.

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