Подчеркните текст в виджете метки Tkinter?
Вопрос
Я работаю над проектом, который требует от меня подчеркивать некоторые текст в виджете метки TKinter. Я знаю, что метод подчеркивания можно использовать, но я могу только по-видимому, чтобы подчеркнуть 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.
Решение
Чтобы подчеркнуть весь текст в виджете метки, вам необходимо создать новый шрифт, который имеет атрибут подчеркивания, установленным на 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()
Другие советы
Для тех, кто работает на 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)
Не связан с StackOverflow