Python Pyqt5:QtableWidgetItem“;无”;
我在PyQt5中创建了一个表,并通过此方法检索单元格中的数据。但是当我尝试QTableWidgetItem中的单元格时,它变为None。那么,我如何解决这个问题,以及如何在一个特定的单元格中插入其他确定的项,例如项2,项3,。。。多谢各位Python Pyqt5:QtableWidgetItem“;无”;,python,python-3.x,pyqt5,qtablewidget,qtablewidgetitem,Python,Python 3.x,Pyqt5,Qtablewidget,Qtablewidgetitem,我在PyQt5中创建了一个表,并通过此方法检索单元格中的数据。但是当我尝试QTableWidgetItem中的单元格时,它变为None。那么,我如何解决这个问题,以及如何在一个特定的单元格中插入其他确定的项,例如项2,项3,。。。多谢各位 import sys from PyQt5.QtWidgets import (QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem) from PyQt5.QtGui impor
import sys
from PyQt5.QtWidgets import (QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem)
from PyQt5.QtGui import QBrush, QColor
from PyQt5 import QtCore
data = {'111':['Title 1','121','94565','','','','684651','','','44651','','',''], '112':['Title 2','65115','','466149','46645','555641','','','','412045','98416','',''], '113':['Title 3','','','','466149','46645','555641','98656','','','412045','98416','','']}
class Table(QWidget):
def __init__(self, *args, parent=None):
super().__init__()
self.data = data
self.setuptUI()
k = 'str'
v = int
n = int
m = int
self.setdata(k, v, n, m)
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):
global item
item = str(self.data.get(k))
for key in self.data:
if k in key:
item = self.data.get(k)[v]
print(item)
newItem = QTableWidgetItem(str(item))
newItem.setForeground(QBrush(QColor(255, 0, 0)))
self.tableWidget.setItem(23, 4, newItem)
if __name__ == '__main__':
app = QApplication(sys.argv)
windows = Table(data)
item1= Table()
item1.setdata(k="113", v=5, n=24, m=4)
#item2= Table()
#item2.setdata(k="113", v=5, n=25, m=4
windows.show()
sys.exit(app.exec_())
试试看:
import sys
from PyQt5.QtWidgets import (QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem)
from PyQt5.QtGui import QBrush, QColor
from PyQt5 import QtCore
data = {'111':['Title 1','121','94565','','','','684651','','','44651','','',''],
'112':['Title 2','65115','','466149','46645','555641','','','','412045','98416','',''],
'113':['Title 3','','','','466149','46645','555641','98656','','','412045','98416','','']}
class Table(QWidget):
def __init__(self, data): # data
super().__init__()
self.data = data
self.setuptUI()
# k = 'str'
# v = int
# n = int
# m = int
# self.setdata(k, v, n, m)
def setuptUI(self):
self.setWindowTitle("QTableWidgetItem")
self.resize(1200, 600)
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):
# global item # ---
# item = str(self.data.get(k))
# for key in self.data:
# if k in key:
item = self.data.get(k)[v]
print(item)
newItem = QTableWidgetItem(str(item))
newItem.setForeground(QBrush(QColor(255, 0, 0)))
# self.tableWidget.setItem(23, 4, newItem)
self.tableWidget.setItem(n, m, newItem)
if __name__ == '__main__':
app = QApplication(sys.argv)
windows = Table(data)
#- item1= Table()
#- item1.setdata(k="113", v=5, n=24, m=4)
windows.setdata(k="113", v=5, n=24, m=4)
windows.setdata(k="113", v=6, n=24, m=5) # v=6, m=5
windows.show()
sys.exit(app.exec_())
但在其他模块中,出现了“显示我”异常:TypeError'NoneType'对象未订阅您显然设置了字典中没有的键(k=“555”)
print(“值:%s”%data.get(k,“Never”)
行前item=self.data.get(k)[v]
并查看将打印什么。它向我显示值:Never,如果我删除[v],错误是:TypeError:updateData()缺少3个必需的位置参数:“v”、“n”和“m”。我解决了问题bro,在这个模块中,我有一个方法1,可以将CSV文件转换为字典。在第一种状态下,字典是空的,当我调用方法1时,字典变满。同时,方法2“setdata”引用了空字典的状态,而不是完整字典的状态,这就是为什么它不显示任何内容,即使我打印了字典,它也会显示{}。那么,如果您知道如何使用方法1中的词典?