如何确定是否有文字?

时间:2018-06-27 19:39:30

标签: python tkinter tkinter-canvas

我想确定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错误。

我期待着答案。谢谢!

2 个答案:

答案 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")