我正在使用PyQt开发一个图形用户界面(GUI)。GUI中包含一个qListWidget、一个qTableWidget和一个用Mayavi实现的绘图。列表引用了被绘制的形状(例如圆柱体和锥体)。当在列表中选择一个形状时,我希望该形状的属性被加载到表格中(从一个字典变量中),并且在绘图中突出显示该形状。我的Mayavi绘图已经正常工作。此外,如果表格被编辑,我需要重新绘制形状,以反映新的属性值(例如对于圆柱体,如果半径改变)。
所以,当选择列表项时 -> 使用该项的属性更新表格(从字典变量中),在绘图中突出显示该项
当表格被编辑时 -> 更新字典变量并重新绘制该项
问题是:当我选择一个列表项并将数据加载到表格中时,每次更新单元格时都会触发qTableWidget ItemChanged信号,这会导致以不完整的数据多次重新绘制形状。
在程序更新表格时,是否有一种典型的方法可以禁用GUI事件循环?(我有Excel VBA的经验,在那种情况下,设置Application.EnableEvents=False将防止每次单元格被程序更新时触发WorksheetChange事件。) 我应该有一个“正在更新表格”变量来防止在表格更新时采取行动吗? 是否有一种一次性更新表格小部件而不是逐个项目更新的方法?(我承认我正在故意避开Model-View框架,因此使用qListWIdget和qTableWidget)。
有什么建议吗?
我是第一次张贴者,但是我长期使用StackOverflow,所以提前感谢您成为这样一个令人敬畏的社区!