_tkinter.TclError: неверное имя команды ".! toplevel.! canvas.! entry" - PullRequest
0 голосов
/ 02 ноября 2019

Я действительно новичок в python и сейчас работаю над приложением для входа. Пока программа загружается, и когда вы нажимаете новую кнопку, появляется новое окно с просьбой ввести детали. У меня проблема с отображением подсказки под кнопкой «регистрация прошла успешно», а затем удаление текста, введенного пользователем в поля ввода, и выдает ошибку:

РЕДАКТИРОВАТЬ:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\ZacBe\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:/Users/ZacBe/OneDrive - New College Lanarkshire/Python Alan Mcgregor/PyCharm/Password Saver 1.1.py", line 88, in registerUser
    usernameEntry.delete(0, END)
  File "C:\Users\ZacBe\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 2679, in delete
    self.tk.call(self._w, 'delete', first, last)
_tkinter.TclError: invalid command name ".!toplevel.!canvas.!entry"

Код:

from tkinter import *
import hashlib
import os

def main():

    global root
    root = Tk()
    root.geometry("1000x800")
    root.title("Password Saver 1.1")
    root.resizable(False, False)

    canvas = Canvas(width=300, height=200, bg='black')
    canvas.pack(expand=YES, fill=BOTH)
    canvas1 = Canvas(width = 87, height= 73)
    canvas1.place(x= 450, y = 180)

    global bgImage
    bgImage = PhotoImage(file='...')


    logoImage = PhotoImage(file='...')
    canvas1.create_image(47,40, image=logoImage)
    canvas.create_image(1,1, image=bgImage, anchor="nw")
    canvas.create_text(500, 310, text= "Welcome To The Password Saver App", font="Calibri 18", fill = "white")
    canvas.create_text(500,350,text= "Are you a returning user or a new user?", font="Calibri 18", fill = "white")

    Button(text="Returning",height = 3, width = 17,font = "Calibri 14").place(x=310,y=400)
    Button(text="New",height = 3, width = 17,font = "Calibri 14", command = registerUser).place(x=510,y=400)

    root.mainloop()

def createScreen2():

    global screen1
    screen1 = Toplevel()
    screen1.geometry("400x400")
    screen1.title("Registration")
    screen1.resizable(False, False)

    global canvas2

    canvas2 = Canvas(screen1,width = 300, height= 300)

    canvas2.pack(expand=YES, fill = BOTH)
    canvas2.create_image(1, 1, image=bgImage, anchor="nw")
    canvas2.create_text(200, 20, text="Please Enter Your Details Below:", fill = "white", font= "Calibri 14")
    canvas2.create_text(200, 100, text= "Enter a Username:", fill = "white", font= "Calibri 12")
    canvas2.create_text(200, 180, text= "Enter a Password:", fill = "white", font= "Calibri 12")

    global username
    global password
    global usernameEntry
    global passwordEntry

    username = StringVar()
    password = StringVar()

    usernameEntry = Entry(canvas2, width = 40, justify = "center", textvariable= username)
    usernameEntry.place(x= 80, y= 120)
    passwordEntry = Entry(canvas2, width = 40, justify = "center", textvariable = password, show= "*")
    passwordEntry.place(x= 80, y= 200)

    Button(canvas2,text= "Register", width = 12, height = 3).place(x= 150, y= 250)


    screen1.mainloop()

def registerUser():

    createScreen2()

    registeredUsername = username.get()
    registeredPassword = password.get()

    writeUser = open("Username", "a+")
    writePass = open("Pass", "a+")
    writeUser.write(registeredUsername+"\n")
    writePass.write(registeredPassword+"\n")
    writeUser.close()
    writePass.close()

    usernameEntry.delete(0, END)
    passwordEntry.delete(0, END)

    canvas2.create_text(200, 250, text = "Registration successful", fill = "green", font = "Calibri 11")

changedir()
main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...