简体   繁体   English

来自 QTableWidget 的 PyQt6 IndexError

[英]PyQt6 IndexError from QTableWidget

this is the mini Excel. i tried to load to csv file, and i was successed to show the table.这是迷你 Excel。我试图加载到 csv 文件,我成功地显示了表格。

So i think it's perfect.所以我认为这是完美的。 but it is not.但事实并非如此。 PyCharm Showed me the IndexError -\> list index out of range PyCharm 显示IndexError -\> list index out of range

but i can't find this problem anywhere.但我无法在任何地方找到这个问题。

this is my code.这是我的代码。 and i made a QTableWidget with PyQt6 Designer.我用PyQt6 Designer 制作了一个QTableWidget the table name is self.mytable .表名是self.mytable

def make_table(self, tableitems):
    self.mytable.setRowCount(len(tableitems))
    self.mytable.setColumnCount(len(tableitems[0]))
    print(len(tableitems), len(tableitems[0]))
    cnt = 0
    try:
        for i in range(len(tableitems)):
            for j in tableitems:
                self.mytable.setItem(cnt, i, QTableWidgetItem(j[i]))
                cnt += 1
                if cnt == len(tableitems):
                    cnt = 0
    except Exception:
        err_msg = traceback.format_exc()
        print(err_msg)

def open_file(self):
    filename = QFileDialog.getOpenFileName(self, "열기") #Open
    table = QTableWidget()
    tableitems = list()
    if filename[0]:
        f = open(filename[0], "r", encoding="utf-8")
        with f:
            datalines = csv.reader(f)
            for dataline in datalines:
                tableitems.append(dataline)
            UI.make_table(self, tableitems)
            self.infor.setText("파일 불러오기에 성공했어요!") # File has been Loaded
            self.file_name = filename[0]
    else:
        self.infor.setText("파일 불러오기에 실패했어요!") # File hasn't been Loaded

and Traceback tell me about error's occur line.和 Traceback 告诉我错误发生的行。

self.mytable.setItem(cnt, i, QTableWidgetItem(j[i]))
                                              ~^^^

but i could't find what's the problem.但我找不到问题所在。

I also checked the csv file separately, but there was no problem. csv这个文件我也单独查过,也没有问题。

Please let me know what should i do.请让我知道我该怎么做。

really thanks for musicamante , i found the answer that what should i do.非常感谢musicamante ,我找到了我该怎么做的答案。

        try:
        for row, rowitems in enumerate(tableitems):
            for column, item in enumerate(rowitems):
                self.mytable.setItem(row, column, QTableWidgetItem(rowitems[column]))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM