如何识别是否有文本?



我想确定 tkinter 的画布上是否有文本。

import tkinter  
c = tkinter.Canvas(width=500, height=500)  
def actionOne():  
c.delete(text)                          #here I have to identify if there is any text  
text = c.create_text(250, 400, text="Hi")  
def actionTwo():  
c.delete(text)                     # Here again
c.create_text(250, 400, text="Bye")  

有人可以帮我吗?我必须找出是否有文本以避免未绑定本地错误。

我期待着答案。谢谢!

如果要从全局范围访问和更新text变量,请使用global.如果未在该范围内定义text,则可以捕获引发NameError异常。

def actionOne():
global text
try:
c.delete(text)
except NameError:
pass
text = c.create_text(250, 400, text="Hi")

如果text是全局的,则可以使用if text not in globals()来检查是否定义了文本。此外,您可以使用if globals().get('text')如果text为空或未定义,它将返回False

text = ''
if not globals().get('text'):
print(False)
# False

您可以在函数中对locals()执行相同的操作

def actionOne():
if isinstance(locals().get('text'), str()) and len(locals().get('text'))>1:  
c.delete(text)                            
text = c.create_text(250, 400, text="Hi") 

相关内容

最新更新