我有一个数据字典,我想从第二个列表中选取一些项目作为示例,每个字典的键值都以111 ####作为字典的值,我创建了此方法,但是如何获得将所有项目的总和插入QTableWidget单元格中?
import sys
from PyQt5.QtWidgets import (QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem)
from PyQt5.QtGui import QBrush, QColor
from PyQt5 import QtCore
data = {'1111':['Title 1','12521','94565','','','','684651','','','44651','','',''], '1112':['Title 2','65115','','466149','46645','555641','','','','412045','98416','',''], '1113':['Title 3','243968','','','466149','46645','555641','98656','','','412045','98416','','']}
class Table(QWidget):
def __init__(self, *args, parent=None):
super().__init__()
self.data = data
self.setupUi()
def setuptUI(self):
self.setWindowTitle("QTableWidgetItem")
self.resize(1200, 800)
conLayout = QHBoxLayout()
self.tableWidget =QTableWidget(self)
self.tableWidget.setRowCount(55)
self.tableWidget.setColumnCount(14)
conLayout.addWidget(self.tableWidget)
def setdata(self, k, v, n, m):
i= 1
l = str(k*10)
while I < 4
item = self.data.get(str(int(l)+i))[v]
print(item)
i= i+1
if v== " ":
break
#sum_instruction
newItem = QTableWidgetItem(str(item))
newItem.setForeground(QBrush(QColor(255, 0, 0)))
self.tableWidget.setItem(m, n, newItem)
if __name__ == '__main__':
app = QApplication(sys.argv)
windows = Table(data)
windows.setdata(k="113", v=5, n=25, m=4
windows.show()
sys.exit(app.exec_())
答案 0 :(得分:1)
尝试一下:
import sys
from PyQt5.QtWidgets import (QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem)
from PyQt5.QtGui import QBrush, QColor
from PyQt5 import QtCore
# vvvvvv
data = {'1111':['Title 1','12521', '94565','', '', '777777','684651','','','44651','','',''],
'1112':['Title 2','65115', '', '466149','46645', '555641','','','','412045','98416','',''],
'1113':['Title 3','243968','', '', '466149','46645', '555641','98656','','','412045','98416','','']}
# ^^^^^^
class Table(QWidget):
def __init__(self, data):
super().__init__()
self.data = data
self.setupUi()
def setupUi(self):
conLayout = QHBoxLayout(self) # self
self.tableWidget = QTableWidget(self)
self.tableWidget.setRowCount(55)
self.tableWidget.setColumnCount(14)
conLayout.addWidget(self.tableWidget)
def setdata(self, k, v, n, m):
print(k, v, n, m)
i = 1
# l = str(k*10)
l = str(int(k)*10)
s = 0
while i < 4:
item = self.data.get(str(int(l)+i))[v]
print(item)
i = i+1
# if v == " ":
# break
#sum_instruction
s = s + (int(item) if item else 0)
newItem = QTableWidgetItem(str(item))
newItem.setForeground(QBrush(QColor(255, 0, 0)))
self.tableWidget.setItem(m, n, newItem)
n += 1 # +++
newItem = QTableWidgetItem(str(s))
newItem.setForeground(QtCore.Qt.blue)
self.tableWidget.setItem(m, n, newItem)
if __name__ == '__main__':
app = QApplication(sys.argv)
windows = Table(data)
# windows.setdata(k="113", v=5, n=25, m=4)
windows.setdata(k="111", v=5, n=2, m=4)
windows.setWindowTitle("QTableWidgetItem")
windows.resize(1100, 700)
windows.show()
sys.exit(app.exec_())