Python 如何等待鼠标点击?

Python 如何等待鼠标点击?,python,input,tkinter,onclicklistener,Python,Input,Tkinter,Onclicklistener,我希望我的代码在单击鼠标左键时启动,但我的代码在单击鼠标左键后立即启动。如何使我的代码在继续之前等待鼠标输入 我已经尝试了input(),但这不是我想要的 from tkinter import * import PIL.ImageGrab from PIL import ImageGrab import time import numpy as np import pyautogui import win32api def mouseposition(): global xclick

我希望我的代码在单击鼠标左键时启动,但我的代码在单击鼠标左键后立即启动。如何使我的代码在继续之前等待鼠标输入

我已经尝试了
input()
,但这不是我想要的

from tkinter import *
import PIL.ImageGrab
from PIL import ImageGrab
import time
import numpy as np
import pyautogui
import win32api

def mouseposition():
    global xclick
    global yclick
    xclick, yclick = win32api.GetCursorPos()
    print(xclick, yclick)

def mouseclick():
    state_left = win32api.GetKeyState(0x01) # Left button down = 0 or 1. Button up = -127 or -128
    a = win32api.GetKeyState(0x01)
    if a != state_left:
        mouseposition() # Button state changed
        state_left = a
        print("1")
    else:
        mouseposition()
        print("2")

def something():
    window.update()
    mouseclick()

window = Tk()
window.geometry("700x500")
window.title("Testing")

b = Button(window, text="OK", command=something)
b.grid(row=0, column=2, sticky=W)

window.update()
window.mainloop()

函数某物在我点击OK按钮并获得OK按钮的
xclick,yclick
后立即启动函数
mouseclick
。我希望函数
mouseclick
等待,直到我瞄准屏幕上的某个东西并单击鼠标左键,然后给我单击的位置的
xclick,yclick

为什么要使用
win32api
来获得鼠标按钮的按下和位置?特金特可以做得很好。您可以使用OK按钮激活一个新的左鼠标按钮绑定,并让该绑定在被调用时自动禁用。您甚至可以更改光标以指示程序处于期望用户单击某个位置的状态:

from tkinter import *


def enable_mouseposition():
    window.bind("<Button-1>", get_mouseposition)
    window.config(cursor="crosshair")


def get_mouseposition(event):
    print(event.x, event.y)
    window.unbind("<Button-1>")
    window.config(cursor="arrow")

window = Tk()
window.geometry("700x500")
window.title("Testing")

b = Button(window, text="OK", command=enable_mouseposition)
b.grid(row=0, column=2, sticky=W)


window.mainloop()

这是伟大的工作,但只有当我想点击我的tkinter窗口内。若我想点击的那个点在我的窗口之外呢?啊,是的,这将需要一些不只是tkinter的东西,我会更新我的答案。
from tkinter import *
import win32api


def enable_mouseposition():
    window.after(10, get_mouseposition)


def get_mouseposition():
    state_left = win32api.GetKeyState(0x01)
    if state_left == -127 or state_left == -128:
        xclick, yclick = win32api.GetCursorPos()
        print(xclick, yclick)
    else:
        window.after(10, get_mouseposition)

window = Tk()
window.geometry("700x500")
window.title("Testing")

b = Button(window, text="OK", command=enable_mouseposition)
b.grid(row=0, column=2, sticky=W)

window.mainloop()