2016-01-21 2 views
0

Мне интересно, есть ли способ сделать интерактивный текст в Tkinter. Возможно, как будто вы увидите на экране заголовка игры и где вы наводите указатель мыши на текст, и он меняет цвет/hightlights. Все, что мне нужно, это выполнить другую функцию.Python Tkinter Clickable Text?

Возможно ли это? Благодаря!

+1

это называется 'Button'. см. 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() 

надеюсь, что это помогает :)

Смежные вопросы