【问题标题】:Win32api Only accept int but float neededWin32api 只接受 int 但需要 float
【发布时间】:2018-03-26 06:05:40
【问题描述】:

您好,我有一个问题。 我有我制作的这段代码正在运行:

nosum = int(round(startX * 0.9))
nosum2 = int(round(y * 0.5))
win32api.SetCursorPos((nosum,nosum2))

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,nosum,nosum2,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,nosum,nosum2,0,0)

问题是我必须创建一个 int(round(var)) 因为 win32api 期望 parametere 是 int,但是为了我的使用,我需要该值是 float,我该如何实现?

【问题讨论】:

  • 在内部使用浮点数,并在将它们传递给 API 时将它们舍入为整数。
  • 我需要 api 来使用浮点数,因为在这种情况下我必须“单击”不是整数而是浮点数的东西。
  • 这毫无意义。
  • 这些数字是整数是有原因的。您可以点击第 3 个或第 4 个像素,点击第 3.5 个没有意义。
  • @Andomar Pixel number 3.5 在 90 年代中期设计 Win32 API 时是一个荒谬的想法,但 20 多年后,谁来处理物理像素?您可能正在绘制一个虚拟纹理,该纹理被馈送到 3D 合成器或其他东西,合成器看到的实际监视器的分辨率可能比窗口系统报告的分辨率高 1.67 倍,等等。所以,她可能不是一无所知,只是对旧 API 期望过高。

标签: python winapi


【解决方案1】:

API 函数决定了它的接口。它接受整数值坐标。这是关于接口的基本原则。实施者决定规则,消费者必须遵守。您必须传递整数值。

至于为什么需要整数,SetCursorPosition 函数在屏幕像素中运行。这些是离散的和不可分割的。系统根本没有提供任何方法来用分数坐标来描述光标位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    相关资源
    最近更新 更多