Python apFromGlobal(gp) index=self.tableView.indexAt(vp) 如果不是index.isValid(): 返回 self.menu=QMenu(self) cellText=index.data() openlinkAc
apFromGlobal(gp) index=self.tableView.indexAt(vp) 如果不是index.isValid(): 返回 self.menu=QMenu(self) cellText=index.data() openlinkAction=QAction(“在浏览器中打开链接”,self) openlinkAction.triggered.connect( lambda*args,text=cellText:self.openInANewTab(text) ) self.menu.addAction(openlinkAction) self.menu.popup(QtGui.QCursor.pos()) def OPENINEWTAB(自身,文本): 如果isinstance(文本,str): webbrowser.open(文本)Python apFromGlobal(gp) index=self.tableView.indexAt(vp) 如果不是index.isValid(): 返回 self.menu=QMenu(self) cellText=index.data() openlinkAc,python,qtableview,pyside2,Python,Qtableview,Pyside2,apFromGlobal(gp) index=self.tableView.indexAt(vp) 如果不是index.isValid(): 返回 self.menu=QMenu(self) cellText=index.data() openlinkAction=QAction(“在浏览器中打开链接”,self) openlinkAction.triggered.connect( lambda*args,text=cellText:self.openInANewTab(text) ) self
我尝试了该解决方案,但根本无法触发右键单击菜单。我试图通过将sql代码移到基本函数之外并完全删除按钮来进行调试,但它仍然不会触发右键单击菜单。我正在使用PySide2,Pycharm2020.1,Python版本3.7作为我的解释器设置。@Sam好的,我还没有测试它,所以我需要花时间来做它,这就是为什么我需要确切了解您想要做什么。根据您的代码,有两列:“id”和“url”,我假设当您右键单击第二列中的项目并选择“在浏览器中打开链接”选项时,url必须在浏览器中打开,对吗?如果是,右键单击第一列中的项目会发生什么情况?这是正确的。我仍然需要考虑所有用例,但是当文本不是由https或http标识的URL时,它将忽略右键单击或什么也不做。如果不是url.startswith('http://'),我可以将for循环写为
,而不是url.startswith('https://'):
。如往常一样,我们非常感谢您的帮助。这在过滤或排序时都相当有效。谢谢,我会在地图上读到的。
RuntimeError: Internal C++ object (PySide2.QtGui.QContextMenuEvent) already deleted.