如何在Tkinter | Python 3.6中清除文本框中的文本

如何在Tkinter | Python 3.6中清除文本框中的文本,tkinter,textbox,Tkinter,Textbox,我在删除“labelresult”文本框中的文本时遇到问题。我曾尝试使用在堆栈溢出上找到的一些解决方案,但都不起作用。任何帮助都将不胜感激 from tkinter import * from random import randint def encrypt(): encrypted = "" encCode1 = str(encCode.get()) try: encNum1 = int(encNum.get()) except ValueE

我在删除“labelresult”文本框中的文本时遇到问题。我曾尝试使用在堆栈溢出上找到的一些解决方案,但都不起作用。任何帮助都将不胜感激

from tkinter import *
from random import randint

def encrypt():
    encrypted = ""
    encCode1 = str(encCode.get())
    try:
        encNum1 = int(encNum.get())
    except ValueError:
        labelresult = Label(myGUI, text="You did not use a number please try again").grid(row=7, column=2)
    if (encNum1 == 0):
        encNum1 = randint(-38,4)
    for letter in encCode1:
        if letter == " ":
            encrypted += " "
        else:
            encrypted += chr(ord(letter)+encNum1)
    labelresult = Label(myGUI, text=encrypted).grid(row=7, column=2)

myGUI=Tk()
myGUI.geometry("700x300")
myGUI.title("Encrypter/Decrypter")

encCode=StringVar()
encNum=StringVar()

label1=Label(myGUI,text="Use the two boxes under this text to Encrypt", fg="red").grid(row=0,column=2)
label2=Label(myGUI,text="Enter the code to be encrypted").grid(row=2,column=0)
label3=Label(myGUI,text="Enter a number between -38 and 4 to encrypt with").grid(row=3,column=0)

myn=Entry(myGUI,textvariable=encCode).grid(row=2, column=2)
mys=Entry(myGUI,textvariable=encNum).grid(row=3, column=2)

button1=Button(myGUI,text="Calculate Encrypted Code",command=encrypt).grid(row=4,column=0)

myGUI.mainloop()

与python中的任何其他对象一样,如果要在对象创建后对其进行操作,则必须保留对该对象的非本地引用。这不是tkinter的事情,而是python的工作方式。顺便说一句:常见错误
var=Widget().grid()
,您将
None
分配给
var
,因为
grid()
/
pack()
/
place()
返回
None
。您必须分两步执行
var=Widget()
var.grid()
,如果不需要
var
这个局部变量,它只存在于函数内部,直到您退出函数为止。您必须创建全局变量-它意味着函数外部-即
labelresult=None
并通知函数使用函数中的
global labelresult
来使用此全局变量。另外,您可以在开始时创建标签,以后只更改文本-
labelresult[“text”]=…