You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用行范围从数组填充wxGrid时遇参数类型错误的技术求助

解决wxGrid填充SQLite查询结果的类型错误问题

嘿,我一眼就瞅出问题所在啦!你遇到的'overload 1: argument 1 has unexpected type 'list...'错误,核心原因是把整个行号列表row_num传给了SetCellValue的第一个参数,而这个方法需要的是单个的整数行号,不是列表类型。

错误代码的问题点

你这段代码里:

for row in tbl:
    cells = row[0:2]
    for i in range(len(cells)):
        self.mygrid.SetCellValue(row_num, i, str(cells[i]))

row_num是range(rowNum)生成的列表(比如[0,1,2]),但SetCellValue的第一个参数要求是单个整数行号,类型不匹配自然就报错了。

两种修正方案

方案1:用enumerate自动获取行/列索引(推荐)

这是最简洁不容易出错的方式,enumerate会同时返回元素的索引和值,直接对应网格的行号和列号:

rowNum = 3 # 来自‘select count’查询
tbl = [('apple', 'fruit'), ('bacon', 'meat'), ('rose', 'flower')] # 来自另一查询

# 先确保网格的行数列数正确(提前创建对应数量的单元格)
self.mygrid.CreateGrid(rowNum, 2) # 2是你的数据列数,按需调整

# 遍历数据同时获取行号
for row_idx, row in enumerate(tbl):
    # 遍历每行的单元格同时获取列号
    for col_idx, cell_value in enumerate(row):
        self.mygrid.SetCellValue(row_idx, col_idx, str(cell_value))

方案2:用zip配对行号和数据行

如果你想保留原来生成row_num的逻辑,可以用zip把行号列表和数据行一一配对,每次循环拿到单个行号:

rowNum = 3 # 来自‘select count’查询
row_num = range(rowNum) # 生成[0, 1, 2]
tbl = [('apple', 'fruit'), ('bacon', 'meat'), ('rose', 'flower')] # 来自另一查询

# 提前创建网格结构
self.mygrid.CreateGrid(rowNum, 2)

# 把行号和数据行配对遍历
for row_idx, row in zip(row_num, tbl):
    cells = row[0:2]
    for i in range(len(cells)):
        self.mygrid.SetCellValue(row_idx, i, str(cells[i]))

额外提醒

填充数据前一定要用CreateGrid或者AppendRows/AppendCols确保网格有足够的行和列,不然即使参数类型正确,也可能出现越界错误哦~

内容的提问来源于stack exchange,提问作者Cathy_Hanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:45:41