2010-09-07 20 views
7

Ich arbeite an einem Projekt, bei dem ich Text in einem Tkinter Label-Widget unterstreichen muss. Ich weiß, dass die Unterstreichungsmethode verwendet werden kann, aber ich kann nur scheinen, um 1 Zeichen des Widgets basierend auf dem Argument zu unterstreichen. das heißtText im Tkinter Label-Widget unterstreichen?

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 

Ich brauche die ganzen Text im Widget zu unterstreichen zu können, ich bin sicher, dass dies möglich ist, aber wie?

Ich verwende Python 2.6 auf Windows 7.

Antwort

12

Um den gesamten Text in einem Label-Widget unterstreichen Sie benötigen, um eine neue Schriftart zu erstellen, die die unterstrichenen Attribut auf True gesetzt hat. Hier ein Beispiel:

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

Perfekt! Vielen Dank! –

0

Für die auf Python arbeiten 3 und kann nicht die unterstrichenen zu arbeiten, ist hier Beispiel-Code, damit es funktioniert.

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)