2016-01-21 75 views
0

我想知道是否有方法在Tkinter中生成可點擊的文本。也許就像你會在遊戲的標題屏幕上看到的那樣,以及將鼠標懸停在文本上的位置,它會改變顏色/亮度本身。我需要點擊做的是執行另一個功能。Python Tkinter可點擊文本?

這些事情都有可能嗎?謝謝!

+1

它被稱爲'按鈕'。請參閱:http://effbot.org/tkinterbook/button.htm – furas

+0

是的,這是可能的。有幾種方法可以製作可點擊的文本 - 按鈕,標籤,畫布上的文本,文本小部件上的文本。 –

+0

懸停檢測也是可能的,但需要檢測連續狀態以進行比較。 –

回答

2

你正在尋找的Tkinter的事件:

tk_widget.bind("<Button-1>",CALLBACK) 

的回調需要採取的事件參數,它是包含有關觸發事件的信息的字典。

這可能會遇到重疊的小部件問題,例如畫布中的窗口或標籤有時會觸發窗口後面的窗口回調。

對於將鼠標懸停一個插件的事件被稱爲"<Enter>"和移動鼠標移出控件區域中的一個突出顯示文本效果叫"<Leave>",如果你只是想隨時隨地捕捉點擊一個窗口,然後在根電話root.bind_all("<Button-1>",CALLBACK)

來源:http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/index.html http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/events.html

例如:

try: 
    import tkinter as tk 
except ImportError: 
    import Tkinter as tk 

def change_case(event=None): 
    new_text = str.swapcase(lab["text"]) 
    lab.config(text=new_text) 

def red_text(event=None): 
    lab.config(fg="red") 

def black_text(event=None): 
    lab.config(fg="black") 

root = tk.Tk() 

lab = tk.Label(root,text="this is a test") 

lab.bind("<Button-1>",change_case) 
lab.bind("<Enter>",red_text) 
lab.bind("<Leave>",black_text) 

lab.grid() 
root.mainloop() 

希望這有助於:)