Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我怎样才能避免;分段故障“;使用PyVista打印两个小部件时出错?_Python_Pyqt5_Pyvista - Fatal编程技术网

Python 我怎样才能避免;分段故障“;使用PyVista打印两个小部件时出错?

Python 我怎样才能避免;分段故障“;使用PyVista打印两个小部件时出错?,python,pyqt5,pyvista,Python,Pyqt5,Pyvista,我已经用PyQt5创建了一个GUI,其中有一个区域我想在其中绘制一些卷。有时,我希望对使用PyVista的“添加网格剪辑平面”小部件的卷进行切片。第一次总是很好,但当我试图在同一QFrame中用相同的切片功能绘制另一个卷时,程序崩溃,我得到一个“分段错误(内核转储)”错误 有没有人知道/有什么想法可以让我解决这个问题 我创建了一个小示例(代码见下文),其中QFrame通过用户意愿的切片小部件绘制大脑或Nefertiti的头部 在绘制它们之前,我清除了所有参与者的QFrame并删除了它们的所有属性

我已经用PyQt5创建了一个GUI,其中有一个区域我想在其中绘制一些卷。有时,我希望对使用PyVista的“添加网格剪辑平面”小部件的卷进行切片。第一次总是很好,但当我试图在同一QFrame中用相同的切片功能绘制另一个卷时,程序崩溃,我得到一个“分段错误(内核转储)”错误

有没有人知道/有什么想法可以让我解决这个问题

我创建了一个小示例(代码见下文),其中QFrame通过用户意愿的切片小部件绘制大脑或Nefertiti的头部

在绘制它们之前,我清除了所有参与者的QFrame并删除了它们的所有属性,这要归功于“clear()”,我希望避免的情况是:

1-点击Nefertiti地块 2-点击plot Nefertiti或plot brain 3-当在QFrame区域内单击以移动切片小部件时,程序崩溃

我想在步骤2)之前完成删除网格,以便步骤2)与步骤1)一样有效

我尝试过删除整个QFrame对象,然后从头开始重新创建它,但没有效果

PyQt5图形用户界面: ---------------------------------
#-*-编码:utf-8-*-
#从读取ui文件“double_plot.ui”生成的表单实现
#
#创建人:PyQt5 UI代码生成器5.13.0
#
#警告!在此文件中所做的所有更改都将丢失!
从PyQt5导入QtCore、QtWidgets#QtGui
类Ui_测试(对象):
def设置UI(自测试):
Test.setObjectName(“测试”)
测试。调整大小(642574)
self.widget=qtwidts.QWidget(测试)
self.widget.setGeometry(QtCore.QRect(110,30402433))
self.widget.setObjectName(“widget”)
self.verticalLayout=qtwidts.QVBoxLayout(self.widget)
self.verticalLayout.setContentsMargins(0,0,0,0)
self.verticalLayout.setObjectName(“verticalLayout”)
self.vtkFrame=qtwidts.QFrame(self.widget)
sizePolicy=qtwidts.QSizePolicy(qtwidts.QSizePolicy.Preferred,
qtwidts.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.vtkFrame.sizePolicy()。
hasHeightForWidth())
self.vtkFrame.setSizePolicy(sizePolicy)
self.vtkFrame.setMinimumSize(QtCore.QSize(400400))
self.vtkFrame.setFrameShape(qtwidts.QFrame.StyledPanel)
self.vtkFrame.setFrameShadow(qtwidts.QFrame.Raised)
self.vtkFrame.setObjectName(“vtkFrame”)
self.verticalLayout.addWidget(self.vtkFrame)
self.horizontalLayout=qtwidts.QHBoxLayout()
self.horizontalLayout.setObjectName(“horizontalLayout”)
self.plotNef_button=qtwidts.QPushButton(self.widget)
self.plotNef_按钮.setObjectName(“plotNef_按钮”)
self.horizontalLayout.addWidget(self.plotNef_按钮)
self.plotBrain_button=qtwidts.QPushButton(self.widget)
self.plotBrain\u按钮.setObjectName(“plotBrain\u按钮”)
self.horizontalLayout.addWidget(self.plotBrain_按钮)
self.verticalLayout.addLayout(self.horizontalLayout)
自重传(测试)
QtCore.QMetaObject.connectSlotsByName(测试)
def重新传输(自测试):
_translate=QtCore.QCoreApplication.translate
Test.setWindowTitle(_translate(“Test”,“Test”))
self.plotNef_button.setText(_translate(“Test”,“plotnefertiti”))
self.plotBrain_按钮.setText(_translate(“Test”,“plotBrain”))
主文件-可执行文件(python Main.py) -----------------------------------------------
将pyvista导入为pv
从pyvista导入示例
从PyQt5导入QtWidgets
从双_图导入Ui_测试
类主窗口(QtWidgets.QMainWindow,Ui_测试):
定义初始化(self,*args,**kwargs):
qtwidts.QMainWindow.\uuuuu init\uuuuuu(self,*args,**kwargs)
self.setupUi(self)
self.mesh=无
self.vtk_widget=pv.QtInteractor(self.vtkFrame)
self.plotNef_按钮。单击。连接(self.plotnefertiti)
self.plot\u按钮。单击。连接(self.plot\u-brain)
def plot_nefertiti(自身):
self.vtk_widget.clear()#删除所有参与者和属性
self.mesh=examples.download\u nefertiti()
self.vtk_小部件。添加_网格_剪辑_平面(self.mesh)
self.vtk_widget.update()
def plot_大脑(自身):
self.vtk_widget.clear()#删除所有参与者和属性
self.mesh=examples.download_brain()
self.vtk_小部件。添加_网格_剪辑_平面(self.mesh)
self.vtk_widget.update()
如果名称=“\uuuuu main\uuuuuuuu”:
app=QtWidgets.QApplication([])
窗口=主窗口()
window.show()
app.exec()
如上所述,步骤2使程序崩溃,提醒:

1-点击Nefertiti地块 2-点击plot Nefertiti或plot brain


当在QFrame区域内单击以移动切片小部件时,程序崩溃(仅在步骤2之后)

对于将来阅读此内容的任何人,可以通过在调用
添加网格平面小部件之前调用
禁用平面小部件
来避免此边缘情况。我添加了
pyvista
标记谢谢!)解决了的!顺便说一句,对于任何阅读的人来说,我已经能够解决这个问题,小部件“添加网格剪辑平面”使用了另一个pyvista函数“平面小部件”。在调用函数“添加网格平面小部件”之前,通过调用“禁用平面小部件”解决了这个问题一旦more@jLordMey你应该给自己的问题贴一个答案,而不是添加评论。看见