大侠请留步!!!关于wxpython:在网格输入数据后报错

tunaG 2012-05-22 02:12:17
在网格第一列从上往下依次输入数据,经常出现已经输入过的数据丢失,导致程序崩溃

报以下错误
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python26\lib\threading.py", line 522, in __bootstrap_inner
self.run()
File "C:\Python26\lib\threading.py", line 477, in run
self.__target(*self.__args, **self.__kwargs)
File "F:\AutoTestClientCodes\AutoTestProj.py", line 292, in ExecuteTcl
if (para.grid.GetCellValue(i,0) != ''):
File "C:\Python26\Lib\site-packages\wx-2.8-msw-unicode\wx\grid.py", line 1876, in GetCellValue
return _grid.Grid_GetCellValue(*args, **kwargs)
PyAssertionError: C++ assertion "stringSrc.GetStringData()->IsValid()" failed at ..\..\include\wx/string.h(352) in wxStringBase::wxStringBase(): did you forget to call UngetWriteBuf()?

看不太懂啊,是不是if (para.grid.GetCellValue(i,0) != '')这个判断条件错误?

...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2012-05-23
  • 打赏
  • 举报
回复
CallAfter是异步的,也没返回值,所以不合适你这个场景。或者你换个思路,就简单在UI线程里做事,譬如绑定EVT_GRID_CELL_CHANGE事件,极端状况你可以绑定EVT_IDLE一空闲就检测...
tunaG 2012-05-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
貌似不该在其他线程里直接修改UI,会宕掉的。需要的话调用wx.CallAfter()...
[/Quote]
                for i in range (VALUENUMBER):
if (para.grid.GetCellValue(i,0) != ''):
n = n + 1


VALUENUMBER 是第一列的第几个单元格
貌似出问题的在这个位置,请问该怎么使用 callafter
问这个使用的问题确实很尴尬,但是我找了几个例子,还是不知道怎么对着修改
tunaG 2012-05-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
貌似不该在其他线程里直接修改UI,会宕掉的。需要的话调用wx.CallAfter()...
[/Quote]
好像是这个原因,因为我在脚本里有个大循环,不停的检测输入的数据个数,当读和写同时操作是时,就出现问题啦
angel_su 2012-05-22
  • 打赏
  • 举报
回复
貌似不该在其他线程里直接修改UI,会宕掉的。需要的话调用wx.CallAfter()...

37,741

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧