最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何利用Python獲取鼠標(biāo)在屏幕上的具體位置以及動(dòng)作

 更新時(shí)間:2025年03月14日 10:40:52   作者:計(jì)算機(jī)輔助工程  
這篇文章主要為大家詳細(xì)介紹了如何使用python實(shí)現(xiàn)獲取鼠標(biāo)在屏幕上的具體位置以及動(dòng)作,從而判斷鼠標(biāo)是否在瀏覽器內(nèi),感興趣的小伙伴可以了解下

在Python中,要獲取鼠標(biāo)在屏幕上的具體位置以及動(dòng)作,并判斷鼠標(biāo)是否在瀏覽器內(nèi),我們可以使用pyautogui庫(kù)。pyautogui是一個(gè)非常強(qiáng)大的庫(kù),可以用來(lái)模擬鼠標(biāo)操作、屏幕截圖、獲取屏幕尺寸和分辨率等。

安裝pyautogui

首先,確保你已經(jīng)安裝了pyautogui。如果還沒(méi)有安裝,可以通過(guò)pip安裝:

pip install pyautogui

獲取鼠標(biāo)位置

你可以使用pyautogui.position()來(lái)獲取鼠標(biāo)的當(dāng)前位置。這個(gè)函數(shù)返回一個(gè)包含兩個(gè)元素的元組,分別表示鼠標(biāo)在屏幕上的X和Y坐標(biāo)。

import pyautogui
 
# 獲取鼠標(biāo)當(dāng)前位置
x, y = pyautogui.position()
print(f"Mouse position: X={x}, Y={y}")

監(jiān)聽(tīng)鼠標(biāo)動(dòng)作

pyautogui還允許你監(jiān)聽(tīng)鼠標(biāo)事件,例如鼠標(biāo)點(diǎn)擊、移動(dòng)等。你可以使用pyautogui.listen()方法來(lái)實(shí)現(xiàn)。但是,請(qǐng)注意,這種方法會(huì)阻塞你的腳本,直到你手動(dòng)停止監(jiān)聽(tīng)。如果你想在后臺(tái)持續(xù)監(jiān)聽(tīng),可以考慮使用線程或者異步編程。

import pyautogui
 
def on_move(x, y):
    print(f"Mouse moved to: X={x}, Y={y}")
 
def on_click(x, y, button):
    print(f"Mouse clicked at: X={x}, Y={y}, Button={button}")
# 監(jiān)聽(tīng)鼠標(biāo)移動(dòng)和點(diǎn)擊事件
pyautogui.listen(onMove=on_move, onClick=on_click)

判斷鼠標(biāo)是否在瀏覽器內(nèi)

要判斷鼠標(biāo)是否在瀏覽器內(nèi),你需要知道瀏覽器窗口的位置和大小。你可以使用pyautogui.getWindowsWithTitle()來(lái)獲取特定標(biāo)題的窗口信息,然后判斷鼠標(biāo)位置是否在這個(gè)窗口的區(qū)域內(nèi)。

import pyautogui
 
# 假設(shè)瀏覽器窗口的標(biāo)題是 "Google Chrome"
windows = pyautogui.getWindowsWithTitle('Google Chrome')
if windows:
    window = windows[0]  # 獲取第一個(gè)匹配的窗口,如果有多個(gè)則選擇第一個(gè)
    x, y = pyautogui.position()  # 獲取當(dāng)前鼠標(biāo)位置
    # 獲取窗口的位置和大小
    window_x, window_y, width, height = window.left, window.top, window.width, window.height
    # 判斷鼠標(biāo)是否在瀏覽器窗口內(nèi)
    if window_x <= x <= window_x + width and window_y <= y <= window_y + height:
        print("Mouse is inside the browser.")
    else:
        print("Mouse is outside the browser.")
else:
    print("Browser window not found.")

注意:

確保你的腳本有權(quán)限訪問(wèn)這些信息,尤其是在某些操作系統(tǒng)上可能需要額外的權(quán)限。

對(duì)于跨平臺(tái)的兼容性,特別是在Windows和MacOS上,確保你的代碼在不同平臺(tái)上都能正確運(yùn)行。例如,窗口的屬性和方法在不同平臺(tái)之間可能有所不同。

對(duì)于更復(fù)雜的窗口管理或自動(dòng)化任務(wù),考慮使用像pywinauto(針對(duì)Windows)或pyobjc(針對(duì)MacOS)這樣的庫(kù)來(lái)提供更精確的窗口控制和事件監(jiān)聽(tīng)。但對(duì)于簡(jiǎn)單的任務(wù),pyautogui已經(jīng)足夠強(qiáng)大且易于使用。

方法擴(kuò)展

下面小編為大家整理了一些其他Python獲取鼠標(biāo)位置的相關(guān)方法,希望對(duì)大家有所幫助

Python獲取鼠標(biāo)形狀和位置

import win32gui

cur = win32gui.GetCursorInfo()
print(cur)

# 輸出的是一個(gè)元組,類似于(1, 65561, (606, 699))

# 其中:
# 第二個(gè)元素是鼠標(biāo)的形狀代碼
# 第三個(gè)元素是鼠標(biāo)的位置

# 鼠標(biāo)形狀代碼:
# 65539:正常的鼠標(biāo)形狀
# 65541:文本輸入的形狀
# 65555:調(diào)整窗口大小的形狀
# 65567:超級(jí)鏈接的手指頭
# 65543:圓圈
# 65561:正常的鼠標(biāo)形狀+圓圈
# 如果想寫一個(gè)等待鼠標(biāo)轉(zhuǎn)圈結(jié)束的代碼,應(yīng)該是這個(gè)樣子:
import win32gui
import time

while win32gui.GetCursorInfo()[1] == 65543:
    time.sleep(1)
print('轉(zhuǎn)圈結(jié)束')

用python獲取屏幕上鼠標(biāo)的坐標(biāo)

import pyautogui as pg
import time
def mouse_coordinate():
    print('Press Ctrl-C to quit.')
    try:
        while True:
            # 獲取鼠標(biāo)下x, y坐標(biāo)
            x, y = pg.position()
            # 調(diào)整x, y輸出格式
            positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
            print(positionStr, end='')
            time.sleep(0.2)
            print('\b' * len(positionStr), end='', flush=True)
    except KeyboardInterrupt:
        print('\nDone.')
if __name__ == '__main__':
    mouse_coordinate()

python selenium獲取鼠標(biāo)位置

# 捕捉鼠標(biāo)移動(dòng)事件
self.scatter.scene().sigMouseMoved.connect(self.mouseover)
# 捕捉到單擊事件后,需要做的動(dòng)作,在mouseover函數(shù)里完成,主要是提取點(diǎn)的坐標(biāo)
from PySide2 import QtGui, QtWidgets, QtCore
# from pyqtgraph.Qt import  QtCore
import pyqtgraph as pg
import sys
from random import randint
import numpy as np

FieldRadius = 100

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('pyqtgraph作圖')
        # 創(chuàng)建 PlotWidget 對(duì)象
        self.pw = pg.PlotWidget()
        # 設(shè)置圖表標(biāo)題
        self.pw.setTitle("節(jié)點(diǎn)分布圖",
                         color='008080',
                         size='12pt')
        # 設(shè)置上下左右的label
        self.pw.setLabel("left","縱坐標(biāo)")
        self.pw.setLabel("bottom","橫坐標(biāo)")

        self.pw.setXRange(min=0,  # 最小值
                          max=FieldRadius)  # 最大值
        # 設(shè)置Y軸 刻度 范圍
        self.pw.setYRange(min=0,  # 最小值
                          max=FieldRadius)  # 最大值
        # 顯示表格線
        self.pw.showGrid(x=True, y=True)
        # 背景色改為白色
        self.pw.setBackground('w')
        # 居中顯示 PlotWidget
        self.setCentralWidget(self.pw)

        # 實(shí)時(shí)顯示應(yīng)該獲取 PlotDataItem對(duì)象, 調(diào)用其setData方法,
        # 這樣只重新plot該曲線,性能更高
        self.scatter = self.pw.plot(pen=None, symbol='o')

        self.i = 0
        self.x = [] # x軸的值
        self.new_point_x = 0
        self.y = [] # y軸的值
        self.new_point_y = 0

        self.setMouseTracking(False)
        self.scatter.scene().sigMouseMoved.connect(self.mouseover)
        self.scatter.scene().sigMouseClicked.connect(self.mouse_clicked)

        # 啟動(dòng)定時(shí)器,每隔1秒通知刷新一次數(shù)據(jù)
        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.updateData)
        self.timer.start(100)

    def updateData(self):
        self.scatter.setData(self.x, self.y)

    # 鼠標(biāo)移動(dòng)事件,用于獲取精確坐標(biāo)(好像鼠標(biāo)單擊的坐標(biāo)不準(zhǔn)確)
    def mouseover(self,pos):
        # 參數(shù)pos 是像素坐標(biāo),需要 轉(zhuǎn)化為  刻度坐標(biāo)
        act_pos = self.scatter.mapFromScene(pos)
        if type(act_pos) != QtCore.QPointF:
            return
        # print("over_1:",act_pos.x(), act_pos.y())
        self.new_point_x = act_pos.x()
        self.new_point_y = act_pos.y()

    # 鼠標(biāo)單擊事件,用于鼠標(biāo)單擊后事件的處理,包括:
    # 1)添加新坐標(biāo)
    def mouse_clicked(self,event):

        self.x.append(self.new_point_x)
        self.y.append(self.new_point_y)
        # print("my position is:",self.xx,self.yy)

if __name__ == '__main__':
    app = QtWidgets.QApplication()
    main = MainWindow()
    main.show()
    app.exec_()

到此這篇關(guān)于如何利用Python獲取鼠標(biāo)在屏幕上的具體位置以及動(dòng)作的文章就介紹到這了,更多相關(guān)Python獲取鼠標(biāo)位置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python3.x檢查內(nèi)存可用大小的兩種實(shí)現(xiàn)

    Python3.x檢查內(nèi)存可用大小的兩種實(shí)現(xiàn)

    本文將介紹如何使用Python 3實(shí)現(xiàn)檢查L(zhǎng)inux服務(wù)器內(nèi)存可用大小的方法,包括使用Python標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)和使用Linux命令實(shí)現(xiàn)兩種方式,感興趣可以了解一下
    2023-05-05
  • Python中進(jìn)行字符串格式化的不同方法介紹與對(duì)比

    Python中進(jìn)行字符串格式化的不同方法介紹與對(duì)比

    字符串格式化是每個(gè)Python開(kāi)發(fā)大神們都會(huì)遇到的基礎(chǔ)操作,剛開(kāi)始的時(shí)候用的是%操作符或者是str.format(),到如今的是f-string,但你知道哪種方式最快,哪種最易讀嗎,下面小編就來(lái)簡(jiǎn)單介紹一下吧
    2025-09-09
  • python使用js2py庫(kù)運(yùn)行js代碼

    python使用js2py庫(kù)運(yùn)行js代碼

    本文主要介紹了thon使用js2py庫(kù)運(yùn)行js代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 探索Python內(nèi)置數(shù)據(jù)類型的精髓與應(yīng)用

    探索Python內(nèi)置數(shù)據(jù)類型的精髓與應(yīng)用

    本文探索Python內(nèi)置數(shù)據(jù)類型的精髓與應(yīng)用,包括字符串、列表、元組、字典和集合。通過(guò)深入了解它們的特性、操作和常見(jiàn)用法,讀者將能夠更好地利用這些數(shù)據(jù)類型解決實(shí)際問(wèn)題。
    2023-09-09
  • Python神器之使用watchdog監(jiān)控文件變化

    Python神器之使用watchdog監(jiān)控文件變化

    這篇文章主要為大家詳細(xì)介紹了Python中的神器watchdog以及如何使用watchdog監(jiān)控文件變化,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2023-12-12
  • 使用Python實(shí)現(xiàn)桌面便簽與待辦事項(xiàng)管理工具

    使用Python實(shí)現(xiàn)桌面便簽與待辦事項(xiàng)管理工具

    在數(shù)字化時(shí)代,高效的任務(wù)管理已成為提升個(gè)人和組織生產(chǎn)力的關(guān)鍵因素,本文將手把手教你用Python構(gòu)建一個(gè)輕量級(jí)桌面便簽與待辦事項(xiàng)工具,感興趣的小伙伴可以了解下
    2025-07-07
  • python3常用的數(shù)據(jù)清洗方法(小結(jié))

    python3常用的數(shù)據(jù)清洗方法(小結(jié))

    這篇文章主要介紹了python3常用的數(shù)據(jù)清洗方法(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python實(shí)現(xiàn)把一個(gè)文件夾下所有的文件名和絕對(duì)路徑存入execl表格

    Python實(shí)現(xiàn)把一個(gè)文件夾下所有的文件名和絕對(duì)路徑存入execl表格

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)把一個(gè)文件夾下所有的文件名和絕對(duì)路徑存入execl表格,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-10-10
  • Python中X[:,0]和X[:,1]的用法

    Python中X[:,0]和X[:,1]的用法

    這篇文章主要介紹了Python中X[:,0]和X[:,1]的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • Pyhon Flask框架:第一個(gè)Flask程序

    Pyhon Flask框架:第一個(gè)Flask程序

    這篇文章主要介紹了Flask搭建虛擬環(huán)境并運(yùn)行第一個(gè)flask程序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10

最新評(píng)論

本溪市| 教育| 固镇县| 且末县| 鸡西市| 晋城| 峡江县| 东港市| 兴和县| 尉犁县| 鄂托克旗| 上蔡县| 太湖县| 冷水江市| 德州市| 鄂尔多斯市| 盐源县| 公主岭市| 绥化市| 长海县| 塘沽区| 津市市| 杂多县| 巨野县| 云霄县| 苗栗市| 临邑县| 三门县| 扎鲁特旗| 抚松县| 客服| 民勤县| 中西区| 天气| 蓝山县| 新疆| 贞丰县| 通州市| 电白县| 南雄市| 台东县|