【发布时间】:2019-03-17 10:29:01
【问题描述】:
我的项目中有一个 CSV 模块,可以从 CSV 文件导入数据。 “generateCsvData”方法将其转换为字典,我想将数据插入到许多 QtableWidgets 中(取决于一些处理和计算)。例如“updateData”可以将一个项目插入到第二个 QtableWidget 的单元格(24,5)中,这里的问题是,当我想执行程序和读取设置时,在调试控制台中显示: {} 没有任何。 我知道python对全局范围结果的第一个值的引用= {}
class MyWindow(QMainWindow):
def __init__(self, aPath, parent=None):
super(MyWindow, self).__init__(parent)
self.delimit = '\t'
self.fileName = ""
self.result = {}
def generateCsvData(self, fileName):
f = open(fileName, 'r')
mystring = f.read()
if mystring.count(",") > mystring.count('\t'):
if mystring.count(",") > mystring.count(';'):
self.delimit = ","
elif mystring.count(";") > mystring.count(','):
self.delimit = ";"
else:
self.delimit = "\t"
elif mystring.count(";") > mystring.count('\t'):
self.delimit = ';'
else:
self.delimit = "\t"
f.close()
f = open(fileName, 'r')
with f:
f = open(fileName, 'r')
reader = csv.reader(f, delimiter=self.delimit)
header=[[head] for head in next(reader)]
for row in reader:
key = row[0] #####
print(row)
if key in self.result:
pass
self.result[key] = (row [1:])
print (self.result)
def updateData(self, k, v, n, m):
print (self.result)
#print("Value : %s" % self.result.get(k, "Never"))
item = self.result.get(k)[v]
print(item)
newItem = QTableWidgetItem(str(item))
newItem.setForeground(QBrush(QColor(255, 0, 0)))
self.ui.tableWidget_Bilan.setItem(n, m, newItem)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
app.setApplicationName('MyWindow')
main = MyWindow('')
main.updateData(k="11110000", v=0, n=24, m=4)
main.setMinimumSize(820, 300)
main.show()
sys.exit(app.exec_())
当我单击按钮执行“updateData”方法时,我得到 TypeError:updateData() 缺少 3 个必需的位置参数:'v'、'n' 和 'm'。那么我该如何使用“updateData”,或者在字典满后的任何其他方法?请有任何想法,谢谢!
【问题讨论】:
-
您是否有缩进问题,或者只是标记问题? updateData 方法应该在 myWindow ...
-
问题是,这个来自file_2.py 的MyWindow 类继承了QT Designer 创建的Class Ui_MainWindow() 的一些属性,它有一个QtableWidget 作为(tableWidget_Bilan) 和file_1.py 中的许多其他QtableWidget。当我执行程序时,它会加载 CSV 文件并将其插入到第一个 QtableWidget 以显示项目,并在必要时对其进行修改。我的下一个方法是将 CSV 文件转换为 dict 的方法,它将在加载过程之后在 loadCsv 方法中执行。我得到的 TypeError 是因为第一个状态的字典是空的。希望你能理解我
标签: python-3.x dictionary pyqt5 qtablewidget qtablewidgetitem