PyVista QtInteractor嵌入QFrame无法填满容器的问题求助
解决PyVista QtInteractor无法填满QFrame的问题
问题原因
直接将QtInteractor的父控件设为QFrame时,Qt不会自动让子控件填充整个父容器空间,必须通过布局管理器来约束控件的尺寸和位置。
解决方案
修改代码,确保QFrame拥有布局,并将PyVista的绘图组件添加到布局中,同时去掉布局边距:
from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout from QT_Designer.Validation import Ui_MainWindow from pyvistaqt import QtInteractor class Frm_main(QMainWindow, Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) # 为QFrame创建布局(如果QtDesigner中未添加) layout = QVBoxLayout(self.f_window) layout.setContentsMargins(0, 0, 0, 0) # 移除布局边距,让绘图完全贴合Frame边界 # 创建QtInteractor并将其交互组件添加到布局 self.plotter = QtInteractor() layout.addWidget(self.plotter.interactor) # 设置组件大小策略,确保随Frame缩放 self.plotter.interactor.setSizePolicy( QApplication.QSizePolicy.Expanding, QApplication.QSizePolicy.Expanding )
补充说明
- 如果你已经在QtDesigner中给
f_window添加了布局(比如QVBoxLayout),可以跳过手动创建布局的步骤,直接用self.f_window.layout().addWidget(self.plotter.interactor)添加组件。 full_screen是PyVista的全局全屏设置,和填充父容器无关,所以之前的尝试无效。
内容的提问来源于stack exchange,提问作者RaHeSch
相关产品推荐
相关产品推荐

