2016-04-27 1 views
1

Я пытаюсь создать макет сюжета с помощью PyQtGraph в приложении PyQt.Проблема с виджетами графического макета PyQtGraph

Мне нужен один ряд с двумя графиками, состоящими из первых двух столбцов, а второй - с одной колонной шириной.

Читая документы я предполагаемыми что-то, как это будет работать:

# Create the PyQtGraph Plot area 
self.view = pg.GraphicsLayoutWidget() 
self.w1 = self.view.addPlot(row=1, col=1, colspan=2, title = 'Data1') 
self.w2 = self.view.addPlot(row=1, col=3, colspan=1, title = 'Data2') 

Но в этом случае я получаю две сюжетные области каждая занимает 50% от ширины окна.

Что я делаю неправильно?

С наилучшими пожеланиями,

Бен

ответ

2

colspan позволяет дать ячейку в пролете макета сетки по нескольким столбцам. Я способ, которым он объединяет несколько ячеек сетки. В вашем примере вы получите сетку из 1 строки по 3 столбца. Кажется, что первые два столбца имеют ширину 25% от общей (или 0%, а остальные 50%), а вторая - 50%. Короче: colspan не позволяет вам контролировать ширину столбцов.

Итак, как установить ширину столбцов или их содержимое? Это было удивительно трудно найти. Кажется, что нет методов PyQtGraph, которые обрабатывают это напрямую, вы должны использовать базовые классы Qt.

A pg.GraphicsLayoutWidget имеет как центральный элемент pg.GraphicsLayout. Это, в свою очередь, имеет член layout, который содержит Qt QGraphicsGridLayout. Это позволяет манипулировать ширину столбцов с: setColumnFixedWidth, setColumnMaximimumWidth, setColumnStretchFactor и т.д. Что-то вроде этого может быть то, что вам нужно:

self.view = pg.GraphicsLayoutWidget() 
self.w1 = self.view.addPlot(row=0, col=0, title = 'Data1') 
self.w2 = self.view.addPlot(row=0, col=1, title = 'Data2') 

qGraphicsGridLayout = self.view.ci.layout 
qGraphicsGridLayout.setColumnStretchFactor(0, 2) 
qGraphicsGridLayout.setColumnStretchFactor(1, 1) 

Посмотрите в the documentation of QGraphicsGridLayout и немного поэкспериментировать.

+0

Это отлично работает. Спасибо. – BMichell

Смежные вопросы