pyqtgraph 轴未正确显示
Posted
技术标签:
【中文标题】pyqtgraph 轴未正确显示【英文标题】:pyqtgraph axes not displaying correctly 【发布时间】:2017-12-19 20:32:40 【问题描述】:我最近在将 pyqt 从 PyQt4 更新到 PyQt5 后开始使用 PyQt5,并注意到使用 pyqtgraph 生成的所有绘图的轴位置存在持续错误(见附图)。 x 轴不延伸穿过窗口的底部,并且 y 轴未连接到左下角的 x 轴。此外,大 x 值或小 y 值的轴标签无法准确表示轨迹。
下图是运行产生的:
import pyqtgraph as pg
pg.plot([0,1,2,3,4,5,6,7,8,9],[1,2,4,5,7,8,10,11,13,14])
我在我的 Windows 10 机器上使用 anaconda 创建了一个新的 python 环境来测试这个问题。 conda list qt 的输出是:
pyqt 5.6.0 py35_2
pyqtgraph 0.10.0 py35_0
qt 5.6.2 vc14_5 [vc14]
我尝试使用不同版本的 Python(3.5.3 和 3.6)并删除并重新安装所有 anaconda 发行版,但均未成功。我真的很感激这个问题的任何帮助。提前致谢。
编辑 1: 我应该提到我在外接显示器上运行这个程序。我刚刚发现,如果我将绘图窗口拖到较小的笔记本电脑显示器上,轴就会卡入正确的位置。我还没有发现如何在外接显示器上正确显示绘图,但我怀疑这可能与 QT DPI 缩放环境变量有关。
【问题讨论】:
在特定的桌面配置中遇到了同样的问题:如果我的主显示器上有桌面比例,例如125%,我在上面启动我的应用程序,然后在辅助监视器上没有比例,我在上面显示图形窗口,图形绘制将关闭。如果我删除桌面比例,将两个监视器设置为使用相同的比例,或者将图形窗口移动到主监视器,问题就会消失。不确定桌面比例是如何实际应用的,但似乎 pyqtgraph 或它使用的某些 api 错误地假设辅助监视器上的比例相同。 【参考方案1】:我找到了两种可能的解决方案:
1) 在Qt GUI事件循环开始设置DPI后可以添加下面这行app.setAttribute(QtCore.Qt.AA_Use96Dpi)
2) 外接显示器的 Windows 设置显示缩放参数必须与主显示器(在我的情况下是笔记本电脑显示器)的显示缩放值匹配。
【讨论】:
这实际上破坏了我的第一台显示器上的轴......我想知道是否有人对这个多显示器问题有另一种可能的解决方案以上是关于pyqtgraph 轴未正确显示的主要内容,如果未能解决你的问题,请参考以下文章
PyQtGraph 图在 Qt MainWindow 上显示不正确