使用pyimgui.plot_lines()遇TypeError:需类字节对象而非list
PyImGui plot_lines 报错解决方法
问题原因
PyImGui 的 plot_lines 函数要求传入连续内存块的数值类型,普通 Python 列表无法直接被底层 C 扩展识别。你之前的转换方式存在两个关键问题:
- numpy 数组默认生成
float64类型,部分 PyImGui 版本仅兼容float32; - 使用
array.array时未指定正确的类型码,导致类型不匹配。
正确解决方法
方法1:使用 numpy 数组(指定 float32 类型)
import imgui import numpy as np foo = [0.9, 1.1, 1.3, 2.5] # 转换为单精度浮点数数组 foo_np = np.array(foo, dtype=np.float32) imgui.begin("Plot Window") imgui.plot_lines("Plot", foo_np) imgui.end()
方法2:使用 array.array(指定单精度类型码)
import imgui import array foo = [0.9, 1.1, 1.3, 2.5] # 类型码'f'代表单精度浮点数 foo_array = array.array('f', foo) imgui.begin("Plot Window") imgui.plot_lines("Plot", foo_array) imgui.end()
注意点
你之前的代码imgui.plot_lines("Plot", np.array(foo) or array.array(foo))存在语法错误,or逻辑在这里不适用,需要分别正确转换后传入对应类型的对象。
内容的提问来源于stack exchange,提问作者Ahmadfromjameedium
相关产品推荐
相关产品推荐

