def OnDelete(自我,事件):
sel = self.listbox.GetSelection()
如果sel!= -1:
self.listbox.Delete(SEL)
subor = open(“Save / savegame.txt”,“r”)
lines = subor.readlines()
subor.close()
subor = open(“Save / savegame.txt”,“w”)
selstring = self.listbox.GetString(self.listbox.GetSelection())
换行:
如果行!= selstring:
subor.write(线)
subor.close()
这是保存文件的代码:
def OnNewGame(自我,事件):
nameofplr = wx.GetTextFromUser('输入你的名字:','新游戏')
小霸王=打开( “保存/ savegame.txt”, “一个”)
subor.write(“\ n”+ nameofplr)
subor.close()
savegame = open(“Save /”+ nameofplr +“。prjct”,“w +”)
savegame.close()
显示此错误:
追踪(最近一次通话): OnDelete中的文件“D:\ Python \ Python Projects \ Project \ Project.py”,第106行 selstring = self.listbox.GetString(self.listbox.GetSelection()) GetString中的文件“D:\ Python \ lib \ site-packages \ wx-3.0-msw \ wx_core.py”,第12962行 return core .ItemContainer_GetString(* args,** kwargs) wx._core.PyAssertionError:C ++断言“IsValid(n)”在wxListBox :: GetString()中的.... \ src \ msw \ listbox.cpp(387)失败:wxListBox :: GetString中的索引无效
非常感谢您的帮助!
答案 0 :(得分:0)
考虑一下你的程序是如何工作的: 在OnDelete方法中,您检查选择了哪个项目,然后删除此项目。然后你对你的文件做一些事情。之后,您尝试从所选项目中获取字符串,但这已被您删除。
您应该在
行后调用Deleteselstring = self.listbox.GetString(self.listbox.GetSelection())
如果您将代码放在代码块中也很好,这样我们就可以看到缩进。
答案 1 :(得分:0)
比你多!我修好了!如果有人会遇到同样的问题,你必须更改OnDelete代码(第一个有问题的代码):
def OnDelete(自我,事件):
sel = self.listbox.GetSelection()
f = open(“Save / savegame.txt”,“r”)
read = f.readlines()
f.close()
name = self.listbox.GetStringSelection()
newfile =“”“”“”
因为我读:
如果在i中的名字:
通过
其他:
newfile + = i
n =打开(“Save / savegame.txt”,“w”)
one = str(newfile)
n.write(之一)
n.close
self.listbox.Delete(SEL)