你能帮我找出错误吗?

Can you help me to find the error?

我希望这段代码做的是获取文件或简单消息的哈希码并将其导出到 "txt" 文件。我必须告诉你,这是我第一次用 类 编写代码,所以我可能会犯一些错误。

我已经编写了以下代码,但是当我尝试 运行 它时,出现了以下错误:

File "C:\Python34\lib\tkinter\__init__.py", line 1974, in pack_configure + self._options(cnf, kw))_tkinter.TclError: bad window path name ".45457360"

我已经尝试了几个小时,我注意到的是,将 frameX.destroy() 更改为 frameX.pack_forget() 让我可以 运行 gui 直到 parte2,就像gui 从头开始​​重新启动,但代码继续。是的,这有点奇怪,所以我不能很好地解释它。

拜托,如果这个问题已经在另一个问题中得到了回答,请只回答但不要举报我。问题是我找不到问题的原因,所以我找不到解决方案。 谢谢大家。

from tkinter.filedialog import *
import hashlib

class programa:

    #------------------------------------------

    def parte1(self):
        global frame
        frame=Frame(ventana)
        frame.pack()
        Button(frame,text="Archivo",command=self.parte2_archivo).grid(row=0,column=0)
        Button(frame,text="Mensaje",command=self.parte2_mensaje).grid(row=0,column=1)
        ventana.mainloop()

    def parte2_archivo(self):
        frame.destroy()
        global Arch_to_HASH
        Arch_to_HASH=askopenfilename()
        Arch_to_HASH=open(Arch_to_HASH,"rb").read()
        self.parte4()

    def parte2_mensaje(self):
        frame.destroy()

        global frame2
        frame2=Frame(ventana)
        frame2.pack()
        Entry(frame2,textvariable=Men_to_HASH).pack()
        Button(frame2,text="Siguiente",command=self.parte3).pack()

    def parte3(self):
        frame2.destroy()    
        obj=Men_to_HASH.get()
        obj=obj.encode()
        self.parte4()


    def parte4(self):
        global frame3
        global listbox
        frame3=Frame(ventana)
        frame3.pack()
        listbox=Listbox(frame3)
        listbox.insert(END,"md5")       #0
        listbox.insert(END,"sha1")      #1
        listbox.insert(END,"sha224")    #2
        listbox.insert(END,"sha256")    #3
        listbox.insert(END,"sha384")    #4
        listbox.insert(END,"sha512")    #5
        Button(frame3,text="Siguiente",command=self.parte5)

    def parte5(self):
        if (listbox.curselection()==0):
            opcion="md5"
        elif (listbox.curselection()==1):
            opcion="sha1"
        elif (listbox.curselection()==2):
            opcion="sha224"
        elif (listbox.curselection()==3):
            opcion="sha256"
        elif (listbox.curselection()==4):
            opcion="sha384"
        elif (listbox.curselection()==5):
            opcion="sha512"
        else:
            pass

        hash=hashlib.new(opcion,obj).hexdigest()
        open("hash.txt","w").write(hash)






#----------------------------------------------------------------------------------
    def __init__(self):
        global ventana
        global Men_to_HASH
        ventana=Tk()
        Men_to_HASH=StringVar()
        self.parte1()






programa()

编辑:这个错误是愚蠢的,所以我认为这个问题已经结束。感谢所有帮助过我的人

你得到的错误是因为 parte4():

   frame3=Frame(ventana)
   frame.pack() #<---- this should be frame3.pack()

进行此更改后,代码将执行。然而,它是否真的按照你的意愿去做,可能是另一个问题的话题。

p.s。 另请阅读 classes 和 self。不需要一直使用 global 来在 class 的方法之间共享变量。使用 self,例如

self.frame3=Frame(ventana)
self.frame3.pack()