UDPATE: Возможно, я понял, что QDockWidget не подходит для go. Я разместил новый вопрос здесь: PyQt: можно ли перетаскивать QWidgets в QGridLayout, чтобы изменить их порядок?
Исходный вопрос:
Я пытаюсь создать прокручиваемую область, содержащую два столбца нескольких закрепляемых виджетов. Кроме того, я хотел бы, чтобы область прокручиваемой док-станции была размещена справа в QHBoxLayout. Прямо сейчас у меня есть один столбец QDockWidgets без прокрутки и QTextEdit в качестве моего центрального виджета.
Я хотел бы помочь интегрировать следующее:
- Добавить возможность для другого столбец QDockWidgets
- Отключить функцию для отстыковки в новом окне. Я все еще хотел бы переставить доки
- Добавить scrollarea и полосу прокрутки в dockarea
- Я хотел бы, чтобы макет был QHBoxLayout с dockarea справа.
Изображение показывает, что у меня есть и чего я хочу. Надеюсь, что вы можете помочь!
from PyQt5 import QtCore, QtWidgets, QtGui
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
import random
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
QtWidgets.QMainWindow.__init__(self, parent)
self.textEdit = QtWidgets.QTextEdit()
self.setCentralWidget(self.textEdit)
# First dock
dock1 = QtWidgets.QDockWidget("dock 1", self)
dock1.setAllowedAreas(QtCore.Qt.RightDockWidgetArea)
dock1.setFloating(False)
self.figure1 = Figure() # a figure to plot on
self.canvas1 = FigureCanvas(self.figure1)
self.ax1 = self.figure1.add_subplot(111) # create an axis
data = [random.random() for i in range(10)]
self.ax1.plot(data, '*-') # plot data
self.canvas1.draw() # refresh canvas
dock1.setWidget(self.canvas1)
self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock1)
# Second dock
dock2 = QtWidgets.QDockWidget("dock 2", self)
dock2.setAllowedAreas(QtCore.Qt.RightDockWidgetArea)
self.figure2 = Figure() # a figure to plot on
self.canvas2 = FigureCanvas(self.figure2)
self.ax2 = self.figure2.add_subplot(111) # create an axis
data = [random.random() for i in range(10)]
self.ax2.plot(data, '*-') # plot data
self.canvas2.draw() # refresh canvas
dock2.setWidget(self.canvas2)
self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock2)
# import dockwidgets_rc
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())