Это выдержка из моего проекта.
Я хочу получить элемент из каждого ключа в данных, диктуемых этим методом updateActifData (). Обычно, когда я вызываю его, он передает 1-й аргумент для генерации 1-го элемента, 2-й аргумент генерирует 2-й элемент .... когда я получаю элемент из 1-го ключа, я хочу вставить его в соответствующую ячейку QTableWidget (n, m), K = "234" для n = 18 и выполнить процесс для всех ключей. Но моя проблема в том, что когда я вызываю updateActifData (), он отображает сумму всех ключей в последней ячейке. Если у вас есть какие-либо предложения, спасибо.
data = {'2111':['Capital 1','145321','94565','','','','74651','','','24651','','',''], '23411':['Capital 2','65115','','6149','6645','555641','','','','41245','98416','',''], '23421':['Capital 3','54445','','45c4545','','555641','434556','','453453','','98416','','45453'], '3421':['Capital 4','714445','','34545','155485','','894556','','15645','26149','98416','',''], '3422':['Capital 5','87676','','54553','466149','','','95436','','','76745','','74568',''], '3451':['Capital 6','45645','','','47679','17345','555641','45256','','','412045','98416','',''], '2230':['Capital 7','453445','74345','','466149','44645','1','98656','12564','','412045','98416','',''], '3452':['Capital 8','97845c4','','','1326149','14553','555641','','45345','86945','412045','98416','','']}
class Table(QWidget):
def __init__(self, *args, parent=None):
super().__init__()
self.data = data
self.item_n, self.item_b_1, self.item_b_2 = 0, 0, 0
self.r = BlData(self.data, self.item_n, self.item_b_1, self.item_b_2)
self.setuptUI()
def setuptUI(self):
self.setWindowTitle("QTableWidgetItem")
self.resize(1200, 800)
conLayout = QHBoxLayout()
self.tableWidget_Bl =QTableWidget(self)
self.tableWidget_Bl.setRowCount(55)
self.tableWidget_Bl.setColumnCount(14)
conLayout.addWidget(self.tableWidget_Bl)
self.setLayout(conLayout)
self.updateItems()
def updateItems(self):
m = 5
#if self.data:
self.r.setData()
self.tableWidget_Bl.setItem(int(self.r.getrow()), m, QTableWidgetItem(str(self.r.getnData())))
self.tableWidget_Bl.setItem(int(self.r.getrow()), m-1, QTableWidgetItem(str(self.r.getb_2Data())))
self.tableWidget_Bl.setItem(int(self.r.getrow()), m-2, QTableWidgetItem(str(self.r.getb_1Data())))
return self.r.setData()
class BalanceData():
data = {}
def __init__(self, data):
self.data = data
class BlData(BalanceData):
def __init__ (self, data, item_n, item_b_1, item_b_2):
BalanceData.__init__(self, data)
self.item_n, self.item_b_1, self.item_b_2 = 0, 0, 0
self.n = 0
self.setData()
def setData(self):
self.updateActifData(k="234", n=18)
self.updateActifData(k="342", n=39)
self.updateActifData(k="345", n=41)
def updateActifData(self, k, n):
#the sum for one key
self.n = n
item_n, item_b_1, item_b_2, item_1, item_2 = 0, 0, 0, 0, 0
v=5
for kd, vd in self.data.items():
if kd[:len(k)] == k:
s_1 = vd[v]
print("{:<10} -> {:10.2f}".format(kd, float(s_1) if s_1 else 0))
item_1 = item_1 + (float(s_1) if s_1 else 0)
#print(item)
s_2 = vd[v+1] # the next range
print("{:<10} -> {:10.2f}".format(kd, float(s_2) if s_2 else 0))
item_2 = item_2 + (float(s_2) if s_2 else 0)
self.item_b_1 = item_1 + item_2
for kd, vd in self.data.items():
if kd[:len(k)] == k:
s_1 = vd[v+6]
print("{:<10} -> {:10.2f}".format(kd, float(s_1) if s_1 else 0))
item_1 = item_1 + (float(s_1) if s_1 else 0)
#print(item)
s_2 = vd[v+7] # the next range
print("{:<10} -> {:10.2f}".format(kd, float(s_2) if s_2 else 0))
item_2 = item_2 + (float(s_2) if s_2 else 0)
self.item_b_2 = item_1 + item_2
self.item_n = self.item_b_1 - self.item_b_2
def getrow (self):
print ("getrow:", self.n)
return self.n
def getb_1Data (self):
return self.item_b_1
def getb_2Data (self):
return self.item_b_2
def getnData (self):
return self.item_n
if __name__ == '__main__':
app = QApplication(sys.argv)
windows = Table()
windows.show()
sys.exit(app.exec_())