2016-01-21 121 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() 

希望这有助于:)