Python和Qt:在多级QMenu中检索分支名称
在完成动态QMenu树时遇到问题。Python和Qt:在多级QMenu中检索分支名称,qt,dynamic,pyqt,sender,qmenu,Qt,Dynamic,Pyqt,Sender,Qmenu,在完成动态QMenu树时遇到问题。 结构和格式都很完美,但仍然缺少的是在触发结束操作时返回所有分支名称 我尝试过的唯一一种解决方案是使用self.sender();它只返回结束操作的名称 在添加大量冗长的代码片段之前——从概念化这个问题开始似乎是最好的,以防有一些(明显的)意味着我看过头了 榜样; 以页脚数字为基础的理想回报率应该是 顶部图像: “单一结果”-“主要结果” 中间图像: “批处理结果”-“testBatch_vr3”-“运行1”-“预算结果” 底部图像: “单一结果”-“test
结构和格式都很完美,但仍然缺少的是在触发结束操作时返回所有分支名称 我尝试过的唯一一种解决方案是使用self.sender();它只返回结束操作的名称 在添加大量冗长的代码片段之前——从概念化这个问题开始似乎是最好的,以防有一些(明显的)意味着我看过头了 榜样; 以页脚数字为基础的理想回报率应该是
- 顶部图像: “单一结果”-“主要结果”
- 中间图像: “批处理结果”-“testBatch_vr3”-“运行1”-“预算结果”
- 底部图像: “单一结果”-“testBatch_vr3”-“运行3”-“粒子轨迹”
触发结束操作时,如何检索多级别qmenu集合中的所有名称?以下复杂位解决了我的问题。这可能有点晦涩难懂(从菜单中悬停信号以搜索字典菜单项),但目前效果良好
# checks batch processing folder for existing directories and publishes the contents
# into the batch results menu comboBox
def populateBatchResults(self):
self.batchMenuDict = {}
self.runMenuDict = {}
self.runBatchResultsPopup.clear()
self.batchDirNamesMenu.clear()
batchModDir = self.estabBatchModelDir()
for batch in os.listdir(batchModDir):
fullBatchDir = batchModDir+str(batch)
if os.path.isdir(fullBatchDir):
self.batchMenuDict[batch] = QMenu(self.iface.mainWindow())
self.batchMenuDict[batch].setTitle(str(batch))
self.runBatchResultsPopup.addMenu(self.batchMenuDict[batch])
for run in os.listdir(fullBatchDir):
fullRunDir = fullBatchDir+'\\'+str(run)
if os.path.isdir(fullRunDir):
self.runMenuDict[run] = QMenu(self.iface.mainWindow())
self.runMenuDict[run].setTitle(str(run))
self.batchMenuDict[batch].addMenu(self.runMenuDict[run])
self.runMenuDict[run].hovered.connect(self.assertBatchMenuSelection)
# get all current cursor hovered menu names
def assertBatchMenuSelection(self):
self.selectedBatch = self.runBatchResultsPopup.activeAction().text()
self.selectedRun = self.batchMenuDict.get(self.selectedBatch).activeAction().text()
self.selectedAction = self.runMenuDict.get(self.selectedRun).activeAction().text()