我想确定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")
有人可以帮我吗?我必须找出是否有文字来避免UnboundLocal错误。
我期待着答案。谢谢!
答案 0 :(得分:3)
如果要从全局范围访问和更新text
变量,请使用global
。如果未在该范围内定义text
,则可以捕获引发的NameError
异常。
def actionOne():
global text
try:
c.delete(text)
except NameError:
pass
text = c.create_text(250, 400, text="Hi")
答案 1 :(得分:2)
如果text
是全局的,则可以使用if text not in globals()
检查是否定义了文本。此外,您可以使用if globals().get('text')
,如果False
为空或未定义,它将返回text
:
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")