PyQt5 figurecanvas 不拉伸
Posted
技术标签:
【中文标题】PyQt5 figurecanvas 不拉伸【英文标题】:PyQt5 figure canvas doesnt stretch 【发布时间】:2022-01-18 04:01:54 【问题描述】:问题是我的 FigureCanvas 没有采用所有可能的高度,它只是调整它的宽度。调整主窗口大小后会出现此问题。我想让画布占据最大可用高度。
这就是现在的样子
这是最小的可重现示例:
import sys
import os
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtGui import (QPixmap, QPainter, QBrush, QPen, QColor)
from PyQt5.QtCore import *
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from PyQt5.QtWidgets import *
import matplotlib
from matplotlib import pyplot as plt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Distributions")
self.setMinimumSize(480, 320)
# Layout
mainLayout = QVBoxLayout()
dirLayout = QHBoxLayout()
radioLayout = QHBoxLayout()
canvasLayout = QVBoxLayout()
# Setting main Widget
self.mainWidget = QWidget()
self.setCentralWidget(self.mainWidget)
self.mainWidget.setLayout(mainLayout)
# Setting canvas to plot
mainLayout.addLayout(canvasLayout)
figure = plt.figure()
canvas = FigureCanvas(figure)
toolbar = NavigationToolbar(canvas, self)
canvasLayout.addWidget(toolbar)
canvasLayout.addWidget(canvas)
plotButton = QPushButton('Plot')
canvasLayout.addWidget(plotButton,
alignment=QtCore.Qt.AlignCenter)
plotButton.setMaximumSize(QSize(80, 60))
app = QApplication(sys.argv)
dialogi = MainWindow()
dialogi.show()
sys.exit(app.exec_())
【问题讨论】:
尝试删除canvasLayout.setAlignment(Qt.AlignCenter)
,否则请提供minimal reproducible example。
它不起作用。我添加了重现问题的整个代码
@DamianRecruit 您提供的代码没有生成您指示的图像,我得到:i.imgur.com/5JsT0H7.png
@eyllanesc 只要您不调整窗口大小就可以。很抱歉
@DamianRecruit 看来你还没有理解我,在你的图像中你显示了 QRadioButton 但在你的代码中却没有它的踪迹,我的 DV。
【参考方案1】:
您必须在将小部件添加到布局时设置拉伸因子:
canvasLayout.addWidget(canvas, stretch=1)
【讨论】:
非常感谢你让你觉得“被骗”了,很抱歉以上是关于PyQt5 figurecanvas 不拉伸的主要内容,如果未能解决你的问题,请参考以下文章