亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 QTableWidget 作為參數傳遞給函數

如何將 QTableWidget 作為參數傳遞給函數

交互式愛情 2023-04-25 16:22:42
我有導出到 excel 函數和一堆 QTableWidgets。我知道如果我為每個 tablewidget 創建每個函數是非常低效的,但是我如何將 tablewidget 作為函數的參數傳遞?    def writeCsv(self):        path, _ = QFileDialog.getSaveFileName(self, 'Save File', QDir.homePath() + "/export.csv", "CSV Files(*.csv *.txt)")        if path:            with open(path, 'w') as stream:                print("saving", path)                writer = csv.writer(stream, dialect = 'excel', delimiter = ',')                headers = []                for column in range(self.tableWidget_show.columnCount()):                    header = self.tableWidget_show.horizontalHeaderItem(column)                    if header is not None:                        headers.append(header.text())                    else:                        headers.append("Column " + str(column))                writer.writerow(headers)                for row in range(self.tableWidget_show.rowCount()):                    rowdata = []                    for column in range(self.tableWidget_show.columnCount()):                        item = self.tableWidget_show.item(row, column)                        if item is not None:                            rowdata.append(item.text())                        else:                            rowdata.append('')                    writer.writerow(rowdata)我想使用self.tableWidget_showpart 作為參數,這樣每次當我有其他參數時我都可以更改參數Qtablewidget
查看完整描述

1 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

首先讓每個函數執行最小的任務,以便調試很容易,例如在你的情況下,沒有必要在那里使用 QFIleDialog 來選擇文件,而只接收路徑,然后在另一個函數中進行選擇。另一方面,所使用的信息存儲在模型中而不是視圖中,因此可以通過保存模型而不是 QTableWidget 來概括它,因此您也可以將它用于任何類型的 QTableView。


def write_model_to_csv(self, model, filename):

    with open(filename, "w") as stream:

        writer = csv.writer(stream, dialect="excel", delimiter=",")

        headers = []

        for column in range(model.columnCount()):

            text = model.headerData(column, Qt.Horizontal)

            if text:

                headers.append(text)

            else:

                headers.append("Column {}".format(column))

        writer.writerow(headers)

        for row in range(model.rowCount()):

            rowdata = []

            for column in range(model.columnCount()):

                text = model.index(row, column).data()

                if text:

                    rowdata.append(text)

                else:

                    rowdata.append("")

            writer.writerow(rowdata)

path, _ = QFileDialog.getSaveFileName(

    self, "Save File", QDir.homePath() + "/export.csv", "CSV Files(*.csv *.txt)"

)

if path:

    self.write_model_to_csv(self.tableWidget_show.model(), path)


查看完整回答
反對 回復 2023-04-25
  • 1 回答
  • 0 關注
  • 240 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號