2010-09-07 58 views
7

我正在研究一個項目,需要我在Tkinter Label小部件中強調一些文本。我知道可以使用下劃線方法,但我似乎只能根據參數來強調小部件的1個字符。即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 

我需要能夠強調小部件中的所有文本,我相信這是可能的,但怎麼做?

我使用Python 2.6在Windows 7

回答

12

爲了強調在一個標籤窗口小部件,您需要創建一個具有下劃線屬性設置爲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() 
+0

完美!謝謝! – 2010-09-07 17:24:28

0

對於那些使用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)