当与ovito库结合使用时,Python的matplotlib中的plt.figure()中的“Cannot create a QWidget without QApplication”

hsvhsicv  于 11个月前  发布在  Python
关注(0)|答案(1)|浏览(122)

下面的代码,用Python 3.8执行,失败

import matplotlib.pyplot as plt
import ovito

plt.figure()
# QWidget: Cannot create a QWidget without QApplication
# [1]    97753 abort

字符串
ovito库是完全可操作的。当ovito没有被导入时,plt.figure()自然可以工作。当反转import语句时,错误不会改变。
是什么原因导致了这个错误,有没有解决方法?看起来两个库都试图创建一个QWidget,但同时只能有一个。

bxjv4tth

bxjv4tth1#

也许有点晚,但我遇到了同样的问题。
我使用multiprocessing解决了这个问题:

from multiprocessing import Process
import matplotlib.pyplot as plt

def use_ovito(some_argument=None):
    import ovito
    # Use Ovito
    print(f"I have {ovito}. {some_argument}")

def invoke(some_argument):
    p = Process(target=use_ovito, args=(some_argument,))
    p.start()
    print("Waiting...")
    p.join()
    print("Done")

def main():
    invoke("Hello")
    plt.figure() # Works!

if __name__ == "__main__":
    main()

字符串
(在Python 3.10.12上测试)

相关问题