从 pyqtgraph.Qt 导入 QtGui 为 *

Posted

技术标签:

【中文标题】从 pyqtgraph.Qt 导入 QtGui 为 *【英文标题】:Importing QtGui from pyqtgraph.Qt as * 【发布时间】:2017-02-28 04:04:57 【问题描述】:

我正在尝试使用 pyqtgraph 在我的 PySide GUI 中插入图表。

目标:在遵守pyqtgraphs 导入规则的同时继续为 PySide 使用通配符导入。

显然,PySide.QtCorePySide.QtGui 需要通过 pyqtgraph 导入才能使包正常工作。在示例中,它的写法是这样的:

from pyqtgraph.Qt import QtCore, QtGui

通常我将 PySide 组件导入为:

from PySide.QtCore import *
from PySide.QtGui  import *

注意通配符导入语句。问题是以下在导入时抛出异常(ImportError: No module named QtGui):

from pyqtgraph.Qt.QtCore import *
from pyqtgraph.Qt.QtGui  import *

有没有办法解决这个问题?我宁愿不必返回我的代码并将所有 self.clock_timer = QTimer() 替换为 self.clock_timer = QtCore.Timer() 语句。

捷径:如果我可以避免通过pyqtgraph 导入QtCoreQtGui,那就更好了。当我尝试使用 do it(使用第一个导入样式)时,某些功能(例如 AutoPan)不起作用。

【问题讨论】:

【参考方案1】:

将其放在应用程序的开头,以确保 pyqtgraph 预加载 pyside 模块(并执行它需要做的任何猴子补丁):

import os

os.environ['PYQTGRAPH_QT_LIB'] = 'PySide'

from pyqtgraph import Qt

现在您可以安全地使用您首选的导入,因为sys.modules 将已经包含任何已加载的(已修补的)模块 pyqtgraph:

from PySide.QtCore import *

【讨论】:

这看起来很有希望!我将能够在几天内试用它,然后一定会回来给你检查它是否有效。

以上是关于从 pyqtgraph.Qt 导入 QtGui 为 *的主要内容,如果未能解决你的问题,请参考以下文章

从 PyQt4 导入 QtGui 时找不到图像错误

使用 PyCharm 导入 PyQt4.QtGui 但不导入 QtCore

PyQt5 导入 QtGui 失败

ImportError:无法导入名称 QtGui

PyQt5 没有 QtGui 和 QtWidgets

无法从 QtGui.QStandardItem 发出信号