我正在尝试编写一个Python应用程序,它生成一个没有填充的绿色方块,跟随我的光标。我希望这个正方形始终可见,所以用 CSS 术语来说,我希望它的 z-index 最大。我想实现这一点的方法是:
我研究过 TKInter 等用于图形生成的库,但它似乎始终需要实例化画布。我当前还可以使用 Quartz 检索鼠标位置。
这个答案似乎完全符合我的要求,但是带有画布: Tkinter - 创建一个跟随我的鼠标位置的正方形
目前,我可以使用 Quartz 不断检索光标位置:
import Quartz
import rumps
class MouseCoordinatesApp(rumps.App):
def __init__(self):
super(MouseCoordinatesApp, self).__init__("Mouse Coordinates")
self.timer = rumps.Timer(self.update_coordinates, 0.1)
self.timer.start()
def update_coordinates(self, _):
# Get the current mouse location
mouse_loc = Quartz.NSEvent.mouseLocation()
x, y = int(mouse_loc.x), int(mouse_loc.y)
# Update the title to show coordinates
self.title = f'X: {x}, Y: {y}'
if __name__ == "__main__":
app = MouseCoordinatesApp()
app.run()
我使用过TKInter,但它似乎需要先设置画布。我希望正方形的内部完全透明,并且它的索引优先。
只需使用 tkinter 进行鼠标跟踪和绿色方块生成。
示例:
import tkinter
from tkinter import *
root = Tk()
root.geometry(str(root.winfo_screenwidth() - 15) + "x" + str(root.winfo_screenheight() + 10))
size1 = root.winfo_screenwidth() - 15
size2 = root.winfo_screenheight() + 10
canvas = Canvas(root, width = size1, height = size2, bg = "red")
canvas.pack()
def MousePosition(Event):
global x, y
x, y = Event.x, Event.y
canvas.delete("all")
square = canvas.create_rectangle(x - 15, y -15, x + 15, y + 15, fill = "green")
print(f"{x} {y}")
root.bind("<Motion>", MousePosition )
root.mainloop()