【问题标题】:How to get the state of the cursor?如何获取光标的状态?
【发布时间】:2020-01-06 08:33:24
【问题描述】:

我想知道 Python 3.8 中是否有任何方法可以读取游标类型,例如 win32gui 如何处理 win32gui.GetCursorInfo(),查找游标的 id。下面是我所说的光标状态:

【问题讨论】:

标签: python python-3.8 mouse-cursor


【解决方案1】:

请在下面找到代码。

参考: https://www.iditect.com/how-to/10284849.html,不过我稍微修改了一下:

from win32con import IDC_APPSTARTING, IDC_ARROW, IDC_CROSS, IDC_HAND, \
IDC_HELP, IDC_IBEAM, IDC_ICON, IDC_NO, IDC_SIZE, IDC_SIZEALL, \
IDC_SIZENESW, IDC_SIZENS, IDC_SIZENWSE, IDC_SIZEWE, IDC_UPARROW, IDC_WAIT

from win32gui import LoadCursor, GetCursorInfo

def get_current_cursor():
    curr_cursor_handle = GetCursorInfo()[1]
    return Cursor.from_handle(curr_cursor_handle)

class Cursor(object):
    @classmethod
    def from_handle(cls, handle):
        for cursor in DEFAULT_CURSORS:
            if cursor[1].handle == handle:
                return cursor[0] #DEFAULT_CURSORS.index(cursor) , Cursor.__init__
        return cls(handle=handle)

    def __init__(self, cursor_type=None, handle=None):
        if handle is None:
            handle = LoadCursor(0, cursor_type)
        self.type = cursor_type
        self.handle = handle

DEFAULT_CURSORS = (('APPSTARTING',Cursor(IDC_APPSTARTING)), ('ARROW',Cursor(IDC_ARROW)), ('CROSS',Cursor(IDC_CROSS)), ('HAND',Cursor(IDC_HAND)), \
       ('HELP',Cursor(IDC_HELP)), ('IBEAM',Cursor(IDC_IBEAM)), ('ICON',Cursor(IDC_ICON)), ('NO',Cursor(IDC_NO)), ('SIZE',Cursor(IDC_SIZE)),\
       ('SIZEALL', Cursor(IDC_SIZEALL)),('SIZENESW', Cursor(IDC_SIZENESW)), ('SIZENS',Cursor(IDC_SIZENS)), ('SIZENWSE',Cursor(IDC_SIZENWSE)),\
        ('SIZEWE', Cursor(IDC_SIZEWE)), ('UPARROW', Cursor(IDC_UPARROW)), ('WAIT',Cursor(IDC_WAIT)))

while(True):
    print(get_current_cursor())

【讨论】:

    猜你喜欢
    • 2016-04-20
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 2011-04-20
    • 1970-01-01
    相关资源
    最近更新 更多