Background
出现在我的文本小部件中的每个项目都表示任务。我在列表框上使用文本小部件,因为文本小部件允许不同项目使用不同的颜色。每个任务的颜色是其状态。是否可以为每个任务设置单独的 LC 命令?
我有一个拆分窗格应用程序,右侧有任务(可能是可滚动的),我想单击一个任务以在左侧窗格中打开它进行审查。
主要问题
我可以以任何方式在 Python 文本 Tkinter 小部件中左键单击单独的行时激活单独的事件吗?
只需在 <1>
上设置绑定即可。使用小部件的 index
方法和事件的 x/y 坐标可以轻松获取单击的行号。
下面是一个简单的示例:
import Tkinter as tk
class ExampleApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.status = tk.Label(self, anchor="w")
self.status.pack(side="bottom", fill="x")
self.text = tk.Text(self, wrap="word", width=40, height=8)
self.text.pack(fill="both", expand=True)
self.text.bind("<1>", self.on_text_button)
for n in range(1,20):
self.text.insert("end", "this is line %sn" % n)
def on_text_button(self, event):
index = self.text.index("@%s,%s" % (event.x, event.y))
line, char = index.split(".")
self.status.configure(text="you clicked line %s" % line)
if __name__ == "__main__":
app = ExampleApp()
app.mainloop()
我认为你可以做这样的事情。 tk超链接管理器做到了 ( http://effbot.org/zone/tkinter-text-hyperlink.htm )
由于您已经以不同的方式为线条着色,因此我假设您正在使用tag_config
. 然后,您只需要tag_bind
将回调绑定到文本区域。