NSWindow 拖动区域只应在主线程上无效!这将来会抛出异常

Not*_*ing 13 python macos multithreading nswindow python-3.x

我正在编写一个带有两个线程的 Python 程序。一个显示 GUI,另一个从扫描仪获取输入并将数据保存在在线数据库中。该代码在我的树莓派上运行良好,但如果我在我的 MacBook Pro (Catalina 10.15.2) 上尝试它,我会收到上述警告,然后代码崩溃。

有谁知道如何让它工作或导致问题的原因是什么?

小智 28

您可能想致电:

matplotlib.pyplot.switch_backend('Agg') 
Run Code Online (Sandbox Code Playgroud)
  • 这样你的服务器就不会尝试创建(然后销毁)永远不会被看到的 GUI 窗口。


Laj*_*pad 5

您可能使用不同的 Python 版本。Raspberry PI 上的 Python 仍然允许使主线程之外的 NSWindow 拖动区域无效,而 MacBook Pro 中的 Python 已经停止支持此功能。您可能需要重构代码,以便 NSWindow 拖动区域仅在主线程上无效。

您需要本地化 NSWindow 拖动区域无效的位置,并确保这些区域发生在主线程中。

编辑

提问者解释说,根据他/她的发现,NSWindow 拖动区域仅适用于 Mac。