Python Pyqt5:QtableWidgetItem“;无”;

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

我在PyQt5中创建了一个表,并通过此方法检索单元格中的数据。但是当我尝试QTableWidgetItem中的单元格时,它变为None。那么,我如何解决这个问题,以及如何在一个特定的单元格中插入其他确定的项,例如项2,项3,。。。多谢各位

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中的词典?