问题描述
在 QToolBox 中,我添加了一个用于增加或减少页数的按钮,所有这些按钮都带有一个表格小部件。有没有办法选择每个页面中的表来读取存储的值? 这是可能的代码(代码不全,不能用,是QGIS的一个插件项目)。
class guiSUSTDialog(QDialog):
def __init__(self,iface):
super().__init__()
QDialog.__init__(self,iface.mainWindow())
self.iface = iface
self.layout = qgridLayout()
self.setLayout(self.layout)
self.numAddWidget = 1
self.initUi()
self.resize(700,600)
# Add toolbar and items
def initUi(self):
self.toolBox = QToolBox()
self.getField=CollectField() #Object for selsect correct fields
self.layout.addWidget(self.getField,0)
self.add_button = QPushButton("Add page")
self.layout.addWidget(self.add_button,1,0)
self.add_button.clicked.connect(self.addPage)
self.rem_button=QPushButton("Remove page")
self.layout.addWidget(self.rem_button,2,0)
self.rem_button.clicked.connect(self.removePage)
self.reaload_button = QPushButton("Reload")
self.layout.addWidget(self.reaload_button,3,0)
self.reaload_button.clicked.connect(self.reload)
self.layout.addWidget(self.toolBox,4,0)
self.toolBox.addItem(self.getField,"Setting")
self.run_button=QPushButton("Run")
self.layout.addWidget(self.run_button,5,0)
self.run_button.clicked.connect(self.run)
def addPage(self):
self.numAddWidget += 1
fieldList=[self.getField.selectedField.item(i).text() for i in range(self.getField.selectedField.count())]
self.table=EvalTable(fieldList)#Object table added in each new page
self.toolBox.addItem(self.table,"table {}".format(self.numAddWidget))
self.getField.selectedField.clear()
def removePage(self):
id=self.toolBox.currentIndex()
if id==0:
QMessageBox.warning(self.iface.mainWindow(),"SSAM",("Setting page isn't removable"),QMessageBox.Ok,QMessageBox.Ok)
else:
self.toolBox.removeItem(id)
def reload(self):
self.getField.listAllFields.clear()
self.getField.listAllFields.addItems(allFields)
def run(self):
self.output=OutputPage(self.toolBox.count())
self.toolBox.addItem(self.output,"......")
for i in range(self.toolBox.count()):
print(self.toolBox.itemText(i))
这是我正在使用的 gui Gui with pages and tables added
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)