one*_*ion 6 python macos keyboard-shortcuts hotkeys keyboard-maestro
我正在编写一个python应用程序,其主要目的是运行一个迷你游戏(使用'pygame'库),每当我使用一个热键(目前使用'键盘'库).我希望这个热键被普遍认可,所以我将整个东西打包为状态栏应用程序(使用'rumps'库).
到目前为止,我可以启动整个事情,从状态栏下拉列表选择播放,它的工作原理!大.
但是,如果我尝试使用绑定的热键,运行Play触发器的相同功能,我得到:
python[58226:599749] pid(58226)/euid(0) is calling TIS/TSM in non-main thread
environment, ERROR : This is NOT allowed. Please call TIS/TSM in main thread!!!
Run Code Online (Sandbox Code Playgroud)
这显示了四次,并且是后续的
python[58226:599749] WARNING: nextEventMatchingMask should only be
called from the Main Thread! This will throw an exception in the future.
Run Code Online (Sandbox Code Playgroud)
为了检查它本身不是热键,我做了一个测试:如果我将热键连接到一个更简单的功能,比如设置一个警报,它工作正常.它仍然抱怨,并给我错误:
python[60308:620099] -[NSAlert runModal] may only be invoked from the main thread. Behavior on other threads is undefined. (
0 AppKit 0x00007fff2b7f563f -[NSAlert runModal] + 178
1 _objc.cpython-36m-darwin.so 0x000000010c1358c7 ffi_call_unix64 + 79
2 ??? 0x000070000f3b2e50 0x0 + 123145557847632
)
Run Code Online (Sandbox Code Playgroud)
但它确实运行.但是,如果它连接到Play功能,它会中断(并产生上面的第一个错误).
总结一下:
1)下拉=>运行迷你游戏:成功!
2)Hotkey =>运行迷你游戏:难以理解的错误!
我用谷歌搜索了这个错误,但只看到了解释的问题; 有没有办法可以解决这个错误,使用不同的软件,或不同的方法 - 但不必离开python,或对底层系统执行一些深刻和邪恶的黑客攻击?
我能以某种方式获得热线/游戏以使用主线程环境吗?怎么样?
我可以使用状态栏应用程序以外的车辆来收听热键吗?(更新:我尝试了pynput,并得到了相同的非主线程错误.)
我可以在pygame里面做些什么来让它不具攻击性吗?(目前,它实际上只是为滚动的正弦波动画.)
我可以让臀部回调功能起作用吗?目前,无论在何处或如何调用它,它都没有做任何事情.
(不幸的是,这在Mac上,因为pyhk3仅用于Windows,而wx.Window(可以有热键)也仅适用于Windows)
进一步失败:无法让它与Keyboard Maestro一起运行 - 我之前从未使用过它,所以可能错误地使用它,但它看起来也是一个非常简单的命令,只是扁平没有响应任何.
Aaand ...... Automator脚本运行,但是 - 不是热键!(编辑:显然采取了热键.但是另一个有效!见下文.)
我接受我自己的答案,因为它是迄今为止唯一解决我最感兴趣的问题的答案,即让该东西使用全局快捷方式运行,但是,因为我理想地希望打包和分发它,所以我仍然会很高兴看到解决 python 中问题的答案,并且很乐意向任何这样做的答案授予赏金。
最后,最后,让它与 Automator 中的服务以及系统偏好设置 > 键盘 > 快捷方式一起使用。一路走来,我不得不
| 归档时间: |
|
| 查看次数: |
1531 次 |
| 最近记录: |