【问题标题】:pyqtgraph - Is it possible to have a ImageView without histogram?pyqtgraph - 是否可以有一个没有直方图的 ImageView?
【发布时间】:2016-10-30 03:40:15
【问题描述】:

我目前有一个 ImageView 显示 Dicom 图像,但我不希望该直方图出现在旁边。并且有可能,将这两个按钮移动到另一个地方。 我怎样才能做到这一点?

【问题讨论】:

    标签: python pyqt dicom pyqtgraph


    【解决方案1】:

    我知道现在已经很晚了,但是对于任何想要在未来解决这个问题但想要一个 imageview 而不是 imageitem 的人:

    假设您有一个带有 imageview 标签的 imv 和一个布尔值 show_histogram,您可以使用以下代码切换显示直方图(及其下方的两个按钮)。

    if show_histogram:
        imv.ui.histogram.show()
        imv.ui.roiBtn.show()
        imv.ui.menuBtn.show()
    else:
        imv.ui.histogram.hide()
        imv.ui.roiBtn.hide()
        imv.ui.menuBtn.hide()
    

    【讨论】:

    • 对我来说,是时候了。非常感谢!
    【解决方案2】:

    ImageView 的特殊之处在于您可以获得直方图。显示图像的另一种方法是将ImageItem 添加到基本图并隐藏轴。以这种方式解决问题将使您能够很好地控制应用程序显示的内容。

    这是一个代码示例:

    from PyQt4 import QtGui, QtCore
    import pyqtgraph as pg
    import numpy as np
    
    win = pg.GraphicsWindow()
    plot = win.addPlot()
    
    imagedata = np.random.random((256,256))
    ii = pg.ImageItem(imagedata)
    plot.addItem(ii)
    plot.hideAxis('left')
    plot.hideAxis('bottom')
    
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()
    

    hacky 方法的开始是在您的 ImageView 上调用 ui.histogram.hide()。像这样的

    from PyQt4 import QtCore, QtGui
    import pyqtgraph as pg
    import numpy as np
    
    app = QtGui.QApplication([])
    win = QtGui.QMainWindow()
    imv = pg.ImageView()
    win.setCentralWidget(imv)
    win.show()
    
    imagedata = np.random.random((256,256))
    imv.setImage(imagedata)
    imv.ui.histogram.hide()
    
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()
    

    【讨论】:

      【解决方案3】:

      这是一个侧面没有直方图的 ImageItem。也许这就是你要找的。​​p>

      import pyqtgraph as pg
      from PyQt4 import QtCore, QtGui
      
      app = QtGui.QApplication([])
      
      imageWidget = pg.GraphicsLayoutWidget()
      vb = imageWidget.addViewBox(row=1, col=1)
      img = pg.ImageItem()
      vb.addItem(img)
      vb.setAspectLocked(True)
      

      【讨论】:

      • 这个答案的简单复制粘贴给出了错误:'QWidget:必须在 QWidget 之前构造一个 QApplication'
      • 对不起,我现在添加了 QApplication 构造函数,试试看
      • thx,对不起,如果我的问题很明显:当我在 spyder 的 ipython 控制台中这样做时,它会被冻结并且没有任何反应。怎么了?
      • precisions: 1.I 将 'PyQt4' 替换为 'PyQt5' 和 2. 当我说 'frozen' 时,我有一个可以访问命令历史记录的提示,但我无法进行任何操作在这个控制台中不再使用命令,解释器只是无限循环到下一行,就好像我打开了一个括号一样。
      • 嗨。在普通的 python 解释器而不是 ipython 笔记本中尝试。据我所知,ipython 并不意味着支持 PyQt 应用程序
      猜你喜欢
      • 1970-01-01
      • 2016-10-26
      • 2015-03-13
      • 1970-01-01
      • 2021-04-07
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      相关资源
      最近更新 更多