首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQtGraph中的边距

PyQtGraph中的边距
EN

Stack Overflow用户
提问于 2014-11-23 17:45:59
回答 2查看 4.5K关注 0票数 1

使用PyQtGraph进行简单的图形布局:

代码语言:javascript
复制
from pyqtgraph.Qt import QtGui, QtCore                                              
import pyqtgraph as pg                                                              

app = QtGui.QApplication([])                                                        
view = pg.GraphicsView()                                                            
l = pg.GraphicsLayout(border='g')                                                   
view.setCentralItem(l)                                                              
view.show()                                                                         
view.resize(800,600)                                                                

l.addPlot(0, 0)                                                                     
l.addPlot(1, 0)                                                                     

l.layout.setSpacing(0.)                                                             
l.setContentsMargins(0., 0., 0., 0.)                                                

if __name__ == '__main__':                                                          
    import sys                                                                      
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):         
        QtGui.QApplication.instance().exec_() 

它的产出:

我怎样才能摆脱绿色外线和窗口边框之间的小边距呢?

我可以使用l.setContentsMargins(-10., -10., -10., -10.)来完成这个任务,这是可行的:

但在我看来,这似乎是一个肮脏的伎俩,而且应该有另一个参数来设置这个边际。这有可能吗?是否有另一个边距参数可以设置为0以获得相同的结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-24 13:09:27

我想这可能是Qt的错误。有一个简单的解决办法:

代码语言:javascript
复制
l = pg.GraphicsLayout()
l.layout.setContentsMargins(0, 0, 0, 0)

为了理解这一点,让我们看一个修改过的示例:

代码语言:javascript
复制
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg

app = QtGui.QApplication([])
view = pg.GraphicsView()
view.show()
view.resize(800,600)

class R(QtGui.QGraphicsWidget):
    # simple graphics widget that draws a rectangle around its geometry
    def boundingRect(self):
        return self.mapRectFromParent(self.geometry()).normalized()
    def paint(self, p, *args):
        p.setPen(pg.mkPen('y'))
        p.drawRect(self.boundingRect())

l = QtGui.QGraphicsGridLayout()
r1 = R()
r2 = R()
r3 = R()
r1.setLayout(l)
l.addItem(r2, 0, 0)
l.addItem(r3, 1, 0)

view.scene().addItem(r1)

在本例中,调用l.setContentsMargins(...)具有预期的效果,但调用r1.setContentsMargins(...)没有。Qt文档表明效果应该是相同的,不过:http://qt-project.org/doc/qt-4.8/qgraphicswidget.html#setContentsMargins

票数 2
EN

Stack Overflow用户

发布于 2022-12-01 21:35:58

对于任何在2022年经历这种情况的人,请使用pg.GraphicsLayoutWidget

代码语言:javascript
复制
# GraphicsLayoutWidget is now recommended
w = pg.GraphicsLayoutWidget(border=(30,20,255))
win.centralWidget.layout.setContentsMargins(0,0,0,0)
win.centralWidget.layout.setSpacing(0)

请注意,每个地块的每个蓝色边框之间都没有间隔:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27092164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档