首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python CGEventTap总线错误

Python CGEventTap总线错误
EN

Stack Overflow用户
提问于 2011-02-15 02:52:25
回答 1查看 275关注 0票数 0

每当我运行Python CGEventTap代码时,我都会得到一个总线错误:

代码语言:javascript
复制
def callback(ent):
    loc = CGEventGetLocation(ent)
    print loc

tap = CGEventTapCreate(
    kCGSessionEventTap,
    kCGHeadInsertEventTap, 
    kCGEventTapOptionDefault,
    CGEventMaskBit(kCGEventMouseMoved),
    callback(CGEventRef) )

loop = CFMachPortCreateRunLoopSource(None, tap, 0)
CFRunLoopAddSource(CFRunLoopGetCurrent(), loop, kCFRunLoopCommonModes)

RunApplicationEventLoop()

我是不是明显漏掉了什么?

EN

回答 1

Stack Overflow用户

发布于 2011-03-21 08:32:51

我已经尝试了以下所有方法:...哪些是我需要的,哪些是不需要的?你说链接是什么意思?- Teak

回复你的评论,因为它不适合你的评论。抱歉的。

情况可能有点错综复杂。PyObjC有一大堆关于苹果框架中的函数、对象等的信息(元数据和一些辅助代码),但它本身并不包含代码(因为这是苹果的代码,PyObjC不能随意复制它)。您正在使用的函数位于苹果的ApplicationServices框架中。PyObjC在其Quartz模块中保留了有关该框架的信息。因此,第一部分:要在Python中使用这些函数,您需要获取PyObjC的信息:from Quartz import *

第二部分,正如我所说的,您的应用程序不仅需要知道PyObjC的元数据在哪里,还需要知道您要使用的Apple代码在哪里。这是链接部分。(看起来您使用的不是Xcode,因为您正在设置自己的run循环,但是在Xcode中,您需要转到项目中的链接框架组并将ApplicationServices添加到其中。)

我猜你在用py2app?恐怕我不是百分之百确定如何做到这一点,但这个问题可能会让你开始:Problem using py2app

希望这能为你指明一个有用的方向。

(顺便说一句,当我用您的代码、Xcode和链接的ApplicationServices框架设置一个项目时,它锁定了我的输入设备,所以我唯一能做的就是重新启动。我可能做错了什么,但请注意,当您链接到此链接时,您正在设置的水龙头可能存在其他问题。您可能希望先尝试使用C/Obj-C完成此操作,然后在知道Python可以工作时再将其转换为Python。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4996085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档