如何在不收缩的情况下在qscrollarea中绘制图形?

ds97pgxw  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(283)

我正在创建一个界面,通过单击按钮在另一个选项卡中绘制图形。我希望这些图形在滚动区域中并排绘制。问题是,当我绘制图形时,图形实际上会缩小以适合小部件,而不是滚动条进行可视化
这里有一个最小的可重复的例子

  1. import sys
  2. from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QPushButton,
  3. QLabel, QVBoxLayout, QHBoxLayout, QMessageBox,
  4. QLineEdit,QComboBox, QAction, QTabWidget, QScrollArea)
  5. from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
  6. from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
  7. from matplotlib.figure import Figure
  8. import matplotlib.pyplot as plt
  9. from PyQt5.QtCore import Qt
  10. from PyQt5 import QtGui
  11. class MainWindow(QMainWindow):
  12. #view (GUI)
  13. def __init__(self, parent = None):
  14. #initalizer
  15. super(MainWindow, self).__init__(parent)
  16. #Window
  17. self.setWindowTitle("DataVisualizationPrototype")
  18. self.setGeometry(400, 200, 900, 800)
  19. self.activateWindow()
  20. self.raise_()
  21. self.tab_widget = TabWidget(self)
  22. self.setCentralWidget(self.tab_widget)
  23. class TabWidget(QWidget):
  24. def __init__(self, parent):
  25. super(QWidget, self).__init__(parent)
  26. self.layout =QVBoxLayout(self)
  27. self.tabs = QTabWidget()
  28. self.tab1 = QWidget()
  29. self.tab2 = QWidget()
  30. self.tabs.addTab(self.tab1, "Home")
  31. self.tabs.addTab(self.tab2, "Comparison")
  32. self.layout.addWidget(self.tabs)
  33. self.setLayout(self.layout)
  34. #HOME PAGE
  35. #==========================================
  36. #GeneralLayout
  37. self.tab1layout = QVBoxLayout()
  38. self.tab1.setLayout(self.tab1layout)
  39. self.tab1layout.sizeHint()
  40. plotButton = QPushButton()
  41. self.tab1layout.addWidget(plotButton)
  42. plotbutton.clicked.connect(onclick2)
  43. #COMPARISON TAB
  44. #==========================================
  45. #GeneralLayout
  46. self.tab2layout = QVBoxLayout()
  47. self.tab2.setLayout(self.tab2layout)
  48. self.tab2layout.sizeHint()
  49. self.compGraphLayout = QHBoxLayout()
  50. self.compGraphLayout.addStretch()
  51. self.compScroll = QScrollArea()
  52. self.compScroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
  53. self.compScroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
  54. self.scrollWidget = QWidget()
  55. self.compScroll.setWidget(self.scrollWidget)
  56. self.compScroll.setWidgetResizable(True)
  57. self.tab2layout.addWidget(self.compScroll)
  58. self.scrollWidget.setLayout(self.compGraphLayout)
  59. def onclick2(self, event):
  60. self.plotLayout = QVBoxLayout()
  61. self.fig = plt.figure()
  62. self.plotLayout.addWidget(FigureCanvas(self.fig))
  63. self.plotLayout.addWidget(NavigationToolbar
  64. (FigureCanvas(self.fig),
  65. self.scrollWidget))
  66. self.compGraphLayout.addLayout(self.plotLayout)
  67. # Plot MRE
  68. self.fig.plt.plot([1, 2, 3, 4])
  69. self.fig.plt.ylabel('some numbers')
  70. FigureCanvas(self.fig).adjustSize()
  71. def main():
  72. pt1 = QApplication(sys.argv)
  73. view = MainWindow()
  74. view.show()
  75. sys.exit(pt1.exec())
  76. if __name__ == '__main__':
  77. main()

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题