Как добавить кнопки сверху и снизу цветовой панели - PullRequest
0 голосов
/ 23 ноября 2018

Вот мой пример кода. Я использую gridlayout в своей программе, чтобы добавить свой график, ползунок и кнопки. Здесь мне нужно расположить кнопки вверх, вниз в верхней и нижней части цветовой панели, но я не сделалполучить в точности.когда я использую self.glayout.addWidget (self.down, 9,3,1,1), он занимался всей версткой. Может кто-нибудь, пожалуйста, помогите мне.

self.up = QtGui.QPushButton(_("up"))
self.up.setMaximumWidth(40)
self.up.setLayoutDirection(QtCore.Qt.RightToLeft)
self.down = QtGui.QPushButton(_("down"))
self.down.setLayoutDirection(QtCore.Qt.RightToLeft)
self.down.setMaximumWidth(60)
self.newwidget = QtGui.QWidget()
self.glayout = QtGui.QGridLayout(self.newwidget)
self.canvas = MplCanvas()
self.nextBtn = QtGui.QPushButton(_("Next"))
self.previousBtn = QtGui.QPushButton(_("Previous"))
self.squareNum = QtGui.QLineEdit()
self.glayout.addWidget(self.canvas,0,0,10,10)
self.glayout.addWidget(self.up,1,4,1,1)
self.glayout.addWidget(self.down,9,4,1,1)
self.glayout.addWidget(self.sl,0,10,10,1)
self.glayout.addWidget(self.nextBtn,10,8,1,1)
self.glayout.addWidget(self.previousBtn,10,0,1,1)
self.glayout.addWidget(self.squareNum,10,4,1,1)
self.scrollArea.setWidget(self.newwidget)

мое изображение:

enter image description here

исключенное изображение:

enter image description here

1 Ответ

0 голосов
/ 04 декабря 2018

Если ваш график и цветная полоса могут быть разделены, я бы порекомендовал использовать вертикальную компоновку (QVBoxLayout) для цветовой полосы + кнопки вверх / вниз вашего графика.Вы добавили бы виджеты к вертикальному макету следующим образом:

vlayout = QVBoxLayout()
vlayout.addWidget(up_button)
vlayout.addWidget(color_bar) # I don't know which widget is your color bar
vlayout.addWidget(down_button)

Затем добавьте этот макет в свой макет сетки рядом с основным графиком:

glayout = QGridLayout()
glayout.addWidget(plot, 0, 0)
glayout.addLayout(vlayout, 0, 1)

Если вместо этого, проблемав том, что ваш график и цветовая полоса объединены в один и не могут быть разделены, вы можете вместо этого разделить график между двумя горизонтальными макетами, например, так:

vlayout = QVBoxLayout() # This is the main layout that will hold everything
top = QHBoxLayout()
bottom = QHBoxLayout()
top.addStretch(10) # This will push the button to the far right
top.addWidget(up_button, 1)
bottom.addStretch(10) # This will push the button to the far right
bottom.addWidget(down_button, 1)
vlayout.addLayout(top)
vlayout.addWidget(plot)
vlayout.addLayout(bottom)

В общем, я считаю, что макеты сетки трудноработать и что обычно, вертикальные и горизонтальные макеты могут быть объединены вместе, чтобы получить лучший результат, который позволяет менеджеру макета выполнять свою основную функцию.

...