我在 tkinter 画布中有几个不同的对象标签。我希望用户能够删除带有标记的鼠标光标下的当前对象"token"。
我不希望"token"删除带有标记的所有对象,只删除鼠标光标下的对象。我希望"token"能够删除带有标记的任何对象。我想禁止删除带有标签的对象"line"。我试过了:
self.canvas.delete("current")
Run Code Online (Sandbox Code Playgroud)
但这允许我删除鼠标光标下的任何内容(包括线对象)。当我尝试
self.canvas.delete("token")
Run Code Online (Sandbox Code Playgroud)
这让我可以"token"一次性删除所有带有标签的项目。以下是我的线对象、"token"对象和删除函数的定义摘录:
# create static line
self.canvas.create_line(50,250,200,250, width=7, fill="grey", tags="line")
#Create oval
myoval = self.canvas.create_oval(x0,y0,x1,y1, width=10, outline="black", fill="black",
tags="token")
def on_button_press_deleteoval(self,event):
'''Delete oval with double button 1 click.'''
self.canvas.delete("current")
Run Code Online (Sandbox Code Playgroud) 给定文本文件中的数据:
string1 EP00 37.45 83.83
save
save
save
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
string2
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
gibberish
Run Code Online (Sandbox Code Playgroud)
我想使用sed或awk匹配string1和string 2,然后删除之后string1的所有内容和前3行.我想删除它string2,但不是string1.并删除该文件与下一文本之间的一行.所以预期的产量是:
string1 EP00 37.45 83.83
save
save
save
Run Code Online (Sandbox Code Playgroud)
如果这有助于(16),则两个模式之间总有相同数量的行.我想用sed或执行此操作awk,但只能找出一个脚本来删除两者之间的整个数据块,并保留两个字符串:
sed '/string1/,/string2/{//!d}' file >> tr.txt
Run Code Online (Sandbox Code Playgroud)
有谁知道如何指定保留string1它后面的三行并删除两个模式之间的其余行包括string2?我想用sed或awk更容易做到这一点.
谢谢!