【问题标题】:NSWindow drag regions should only be invalidated on the Main Thread! This will throw an exception in the futureNSWindow 拖动区域应该只在主线程上无效!这将在将来引发异常
【发布时间】:2020-12-04 07:56:21
【问题描述】:
我正在编写一个有两个线程的 Python 程序。一个显示 GUI,另一个从扫描仪获取输入并将数据保存在在线数据库中。该代码在我的树莓派上运行良好,但如果我在我的 MacBook Pro(Catalina 10.15.2)上尝试它,我会收到上述警告,然后是我的代码崩溃。
有没有人知道如何让它工作或导致问题的原因?
【问题讨论】:
标签:
python
python-3.x
multithreading
macos
nswindow
【解决方案1】:
您可能使用不同的 Python 版本。 Raspberry PI 上的 Python 仍然允许在主线程之外使 NSWindow 拖动区域无效,而 MacBook Pro 中的 Python 已经停止支持这一点。您可能需要重构代码,以便 NSWindow 拖动区域仅在主线程上无效。
您需要本地化 NSWindow 拖动区域无效的位置,并确保这些发生在主线程中。
编辑
提问者解释说,根据他/她的发现,NSWindow 拖动区域仅适用于 Mac。
【解决方案2】:
您可能想致电:
matplotlib.pyplot.switch_backend('Agg')
- 这样您的服务器就不会尝试创建(然后销毁)永远不会看到的 GUI 窗口。