Как я могу определить, есть ли текст? - PullRequest
0 голосов
/ 27 июня 2018

Я хочу определить, есть ли текст на холсте в 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 Error.

Я с нетерпением жду ответов. Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Если вы хотите получить доступ и обновить переменную text из глобальной области, сделайте это с помощью global. Если text не определено в этой области, вы можете перехватить возникшее исключение NameError.

def actionOne():
    global text
    try:
        c.delete(text)
    except NameError:
        pass
        text = c.create_text(250, 400, text="Hi")
0 голосов
/ 27 июня 2018

Если 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") 
...