String 如何从列表框中获取字符串

String 如何从列表框中获取字符串,string,listbox,wxpython,String,Listbox,Wxpython,我有一个非常复杂的问题。我搜索了整个互联网,尝试了所有方法,但都没有效果。我想从列表框中获取字符串,然后用word从列表框中删除文件中的行。谁能帮帮我吗?以下是代码: def OnDelete(自我,事件): sel=self.listbox.GetSelection() 如果选择!=-1: self.listbox.Delete(sel) subor=open(“Save/savegame.txt”,“r”) lines=subor.readlines() subor.close() subo

我有一个非常复杂的问题。我搜索了整个互联网,尝试了所有方法,但都没有效果。我想从列表框中获取字符串,然后用word从列表框中删除文件中的行。谁能帮帮我吗?以下是代码:

def OnDelete(自我,事件):
sel=self.listbox.GetSelection()
如果选择!=-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.close()

这是保存文件的代码:
def OnNewGame(自我,事件):
nameofpr=wx.GetTextFromUser('输入您的名字:','新游戏')
subor=open(“Save/savegame.txt”,“a”)
subor.write(“\n”+nameofpr)
subor.close()
savegame=open(“Save/”+nameofpr+“.prjct”,“w+”)
savegame.close()

它显示了这个错误:

回溯(最近一次呼叫最后一次): OnDelete中第106行的文件“D:\Python\Python Projects\Project\Project.py” selstring=self.listbox.GetString(self.listbox.GetSelection()) 文件“D:\Python\lib\site packages\wx-3.0-msw\wx_core.py”,第12962行,在GetString中 返回core.ItemContainer_GetString(*args,**kwargs) Wx.Cy.PyRealSturral:C++断言“ISHALLATION(N)”在.xcListBox::GSTSTRIN()中….SRC\MSW\ListBox(CPUP)中失败:WxListBox中的无效索引::GETSHIGT//P>
非常感谢你的帮助

想想你的程序是如何工作的: 在OnDelete方法中,检查选择了哪个项,然后删除该项。然后你用你的文件做点什么。之后,您尝试从所选项目中获取字符串,但该字符串已被您删除

您应该在该行之后调用Delete

selstring = self.listbox.GetString(self.listbox.GetSelection())

如果您能将代码放在代码块中,这样我们就可以看到缩进了,那也太好了。

比您强多了!我已经修好了!如果有人遇到同样的问题,您必须为此更改OnDelete代码(有问题的第一个代码):

def OnDelete(自我,事件):
sel=self.listbox.GetSelection()
f=打开(“Save/savegame.txt”、“r”) read=f.readlines() f、 关闭() name=self.listbox.GetStringSelection() 新文件=“” 因为我读到: 如果名称在i中: 通过 其他: newfile+=i n=打开(“保存/savegame.txt”,“w”) one=str(新文件) n、 写(一) n、 接近 self.listbox.Delete(sel)