我在這個函式中有一個問題:
def show_selected_button(self):
attrbs = required_attributes[self.modeComboBox.currentText()]
layers = QgsProject.instance().mapLayersByName(self.layerComboBox.currentText())
layer = layers[0]
layer.selectAll()
selected_features = layer.getSelectedFeatures()
data = []
for i in selected_features:
attribute_row = []
for a in attrbs:
attrb = i.attribute(name=a)
if a == "MITTLEREBR":
attrb = round(attrb, 2)
attribute_row.append(attrb)
laenge = i.geometry().length()
vol = laenge * i.attribute(name="DICKE") / 100 * i.attribute(name="MITTLEREBR")
attribute_row.append(round(laenge, 2))
attribute_row.append(round(vol, 2))
data.append(attribute_row)
attrbs.append("L?NGE")
attrbs.append("VOLUMEN")
self.tableWidget.setRowCount(len(data))
self.tableWidget.setColumnCount(len(attrbs))
self.tableWidget.setHorizontalHeaderLabels(attrbs)
for i, x in enumerate(data):
for j, y in enumerate(x):
self.tableWidget.setItem(i, j, QtWidgets.QTableWidgetItem(str(y)))
當我第一次執行此功能時(當我單擊按鈕時),一切正常,但是當我在第一次使用后再次使用時,required_attributes["Strasse"]包括最初添加attrbs但從未獲得的值“L???NGE”和“VOLUMEN”添加到字典中。
required_attributes["Strasse"]函式首次運行時的
內容:['EBENE', 'SCHICHTTYP', 'SCHICHTT01', 'SCHICHTT02', 'DICKE', 'MITTLEREBR']
required_attributest["Strasse"]函式第二次運行時的
內容:['EBENE', 'SCHICHTTYP', 'SCHICHTT01', 'SCHICHTT02', 'DICKE', 'MITTLEREBR', 'L?NGE', 'VOLUMEN']
required_attributes是存盤在不同檔案中的變數。
我不知道為什么會這樣,有人可以幫助我嗎?
uj5u.com熱心網友回復:
通過分配給你的attrbs值,required_attributes[self.modeComboBox.currentText()]你已經創建了一個指向記憶體中同一個物件的鏈接,所以每當你attrbs現在改變時,你都會改變字典中的串列。
attrbs = required_attributes[self.modeComboBox.currentText()]
檢查此答案以獲取示例:
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/521674.html
標籤:Python字典
下一篇:在串列中查找一組單詞
