Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从文本框中删除字符串不起作用_Python_String_Text_Field - Fatal编程技术网

Python 从文本框中删除字符串不起作用

Python 从文本框中删除字符串不起作用,python,string,text,field,Python,String,Text,Field,我试图从文本框中删除一个字符串单词 但我得到了以下错误: TclError: bad text index "3" 代码如下: self.keys = "Bye" def undo(self): I = self.Cont.search(self.keys,1.0,stopindex=END) self.Cont.delete(I,len(I)) 我假设您正在使用TkInter和文本小部件 如果是这样,那么delete方法将获取两个文本索引值,但是您已经为它提供了索引字符串的

我试图从文本框中删除一个字符串单词

但我得到了以下错误:

TclError: bad text index "3"
代码如下:

self.keys = "Bye"
def undo(self):
    I = self.Cont.search(self.keys,1.0,stopindex=END)
    self.Cont.delete(I,len(I))

我假设您正在使用TkInter和文本小部件

如果是这样,那么delete方法将获取两个文本索引值,但是您已经为它提供了索引字符串的一个索引和len,这没有意义

我想你想要的是:

def undo(self):
    countVar = IntVar()
    I = self.Cont.search(self.keys, 1.0, stopIndex=END, count=countVar)
    self.Cont.delete(I,'%s+%d chars' %(I, countVar.get()))
count参数告诉search将匹配长度存储到IntVar对象中,然后可以使用.get方法检索该对象


然后,delete方法将得到一个结束索引,如:1.0+3个字符,该索引应标识刚好超过“e”的位置。

尝试提供最小的工作示例,包括导入。还提供完整的错误跟踪。简化这些东西很容易隐藏原因。@JanVlcinsky问题是它需要一行和一列我只是用lenI或用lenI分配一个数字它需要什么行和列。实际上它很好,但如果用户键入相同的单词,它将删除第一个单词,而不是我想要的最后一个。你是说要查找最后一个单词吗是否出现该词并删除该词?您可以通过设置backwards=True选项尝试从上一个索引向后搜索。是的,这就是我要做的。好的,然后您可以说:searchself.keys,END,backwards=True,count=countVarIt可以工作,但是如果用户点击Enter ot转到下一行并键入一些内容,那么如果他们点击undo进行操作,我会收到一个错误消息:TclError:bad text index