【问题标题】:Python Tkinter Clickable Text?Python Tkinter 可点击文本?
【发布时间】:2016-04-27 21:13:23
【问题描述】:

我想知道是否有办法在 Tkinter 中制作可点击的文本。也许就像您在游戏的标题屏幕上看到的那样,您将鼠标悬停在文本上,它会改变颜色/突出显示本身。我需要做的就是执行另一个功能。

这两种情况都有可能吗?谢谢!

【问题讨论】:

  • 它被称为Button。见:effbot.org/tkinterbook/button.htm
  • 是的,这是可能的。有几种方法可以制作可点击的文本——按钮、标签、画布上的文本、文本小部件上的文本。
  • 悬停检测也是可能的,但需要检测连续状态以进行比较。

标签: text colors tkinter click bind


【解决方案1】:

您正在寻找 tkinter 的活动:

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

回调需要接受一个事件参数,该参数是一个字典,包含有关触发事件的信息。

这可能会遇到重叠的小部件问题,例如画布中的窗口或标签有时会触发其后面窗口的回调。

对于将鼠标悬停在小部件上,该事件称为"&lt;Enter&gt;",将鼠标移出小部件区域称为"&lt;Leave&gt;",用于突出显示文本效果,如果您只想捕获窗口上任意位置的点击,然后点击根拨打root.bind_all("&lt;Button-1&gt;",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()

希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 2014-06-07
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    相关资源
    最近更新 更多