我想确定 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")