【发布时间】:2021-04-30 05:45:11
【问题描述】:
所以我有这些代码行:
from tkinter import *
root = Tk()
root.geometry("400x200")
canvas = Canvas(root, width=150, height=150, bg="black", bd=2, relief="ridge")
canvas.place(x=20, y=20)
A = canvas.create_oval(20,20,30,30, outline='grey', fill="grey")
B = canvas.create_oval(130,130,140,140, outline='grey', fill="grey")
root.mainloop()
我试图找出当我将鼠标悬停在画布上时如何显示文本。例如,当我的鼠标悬停在第一个圆圈上时,文本应该是“A”,而第二个圆圈应该是“B”。
我找到了一个代码,它可以做我想做的事,但它是文本,我不知道如何使它也适用于画布:
import tkinter as tk
class Example(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.l1 = tk.Label(self, text="Hover over me")
self.l2 = tk.Label(self, text="", width=40)
self.l1.pack(side="top")
self.l2.pack(side="top", fill="x")
self.l1.bind("<Enter>", self.on_enter)
self.l1.bind("<Leave>", self.on_leave)
def on_enter(self, event):
self.l2.configure(text="Hello world")
def on_leave(self, enter):
self.l2.configure(text="")
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(side="top", fill="both", expand="true")
root.mainloop()
另外,假设我有另一个 .py 文件,我想在其中为 A 和 B 画布分配一个与该 .py 文件不同的变量,并将其显示在文本配置中。例如:在 .py 文件中我有变量
for_A = 123
for_B = 456
我怎样才能让它看起来像当我悬停在 A 画布上时它会显示如下内容:
A
123
【问题讨论】:
标签: python tkinter events canvas