如何在 MacOS 上生成跟随鼠标的绿色方块?

问题描述 投票:0回答:1

我正在尝试编写一个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,但它似乎需要先设置画布。我希望正方形的内部完全透明,并且它的索引优先。

python macos tkinter unix core-graphics
1个回答
0
投票

只需使用 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()
© www.soinside.com 2019 - 2024. All rights reserved.