2010-09-07 23 views
7

Je travaille sur un projet qui m'oblige à souligner du texte dans un widget Tkinter Label. Je sais que la méthode de soulignement peut être utilisée, mais je peux seulement sembler l'obtenir pour souligner 1 caractère du widget, basé sur l'argument. à savoirSouligner le texte dans le widget Tkinter Label?

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 

Je dois pouvoir souligner tout le texte dans le widget, je suis sûr que cela est possible, mais comment?

J'utilise Python 2.6 sous Windows 7.

Répondre

12

Pour souligner tout le texte dans un widget étiquette que vous devrez créer une nouvelle police qui a l'attribut soulignement est défini sur True. Voici un exemple:

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

Parfait! Merci! –

0

Pour ceux qui travaillent sur Python 3 et ne peut pas obtenir le soulignement de travailler, le code est ici exemple pour le faire fonctionner.

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) 
Questions connexes