AttributeError: 'master' object has no attribute '_loadtk'

AttributeError: 'master' object has no attribute '_loadtk'

我正在尝试为已经可用的 python 模块制作一个 GUI 作为一个项目。我是 Tkinter 的新手,所以我在这里和那里使用了 Bryan Oakley 的这个答案作为我工作的参考。此处的 GUI python 文件应该从用户那里获取数据并使用其他 python 模块 PdbHandler 和 CrdHandler 生成必须使用 Tkinter 显示的数据文件。下面附上的是显示错误属性错误 'Master' object has no attribute '_loadtk' 的项目的当前进度。

  File "C:\Users\Dark12Arrow\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 2022, in __init__
self._loadtk()
AttributeError: 'master' object has no attribute '_loadtk'

我尝试使用 root=tk.Tk() 并将 root 传递给 master 在此查询中出现了类似的问题 Python Tkinter error object has no attribute。但这显示了另一个错误。

 File "C:\Users\Dark12Arrow\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 2020, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, 
wantobjects, useTk, sync, use)
TypeError: create() argument 1 must be str or None, not Tk

由于代码仍然不完整,第二页只是一个空白页:

import tkinter as tk
import PdbHandler 
import CrdHandler
from tkinter import filedialog
filetype=0
class master(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        self.frames = {}
        for F in (StartPage, PageOne, PageTwo):
            page_name = F.__name__
            frame = F(parent=container, controller=self)
            self.frames[page_name] = frame
            self.frames[page_name].grid(row=0, column=0, sticky="nsew")

        self.show_frame("StartPage")

    def show_frame(self, page_name):
        frame = self.frames[page_name]
        frame.tkraise()


class StartPage(tk.Frame):
    def __init__(self,parent,controller):
        tk.Frame.__init__(self,parent)
        def NextAction(event):
            if choice.get()==0:
                print("PDB selected")
                filetype=0
                controller.show_frame(PageOne)
            elif choice.get()==1:
                print("CRD Selected")
                filetype = 1
                controller.show_frame(PageOne)
            else:
                print("select one atleast")

        chosemsg=tk.StringVar()
        choice=tk.IntVar()
        clabel=tk.Label(self,textvariable=chosemsg)
        clabel.grid(row=0,padx=30,pady=10)
        chosemsg.set("Chose File type :")
        pdbradbutton=tk.Radiobutton(self,text="PDB",variable=choice,value=0)
        pdbradbutton.grid(row=1)
        crdradbutton=tk.Radiobutton(self,text="CRD",variable=choice,value=1)
        crdradbutton.grid(row=2)
        nextBttn=tk.Button(self,text="Next", command=lambda: NextAction)
        nextBttn.grid(row=4,pady=10,column=5)

class PageOne(tk.Frame):
    def __init__(self,parent,controller):
        tk.Frame.__init__(self,parent)
        def OpenAction():
            if filetype==0:

                self.filename = filedialog.askopenfilename(initialdir="C:\", title="Select file",
                                                       filetypes=(("pdb files", "*.pdb"), ("all files", "*.*")))
                PdbHandler.pdbHandler(self.filename)
                controller.show_frame(PageTwo)
            elif filetype==1:
                self.filename = filedialog.askopenfilename(initialdir="C:\", title="Select file",
                                                       filetypes=(("pdb files", "*.pdb"), ("all files", "*.*")))
                CrdHandler.crdHandler(self.filename)
                controller.show_frame(PageTwo)
            else:
                print("select one atleast")


        filename=tk.StringVar()
        choice=tk.IntVar()
        clabel=tk.Label(self,textvariable="Choose file")
        clabel.grid(row=0,padx=30,pady=10)

        nextBttn=tk.Button(self,text="Open", command=lambda: OpenAction)
        nextBttn.grid(row=4,pady=10,column=5)

class PageTwo(tk.Frame):
    def __init__(self,parent,controller):
        tk.Frame.__init__(self,parent)

app= master()
app.mainloop()

第 8 行不应该是:

super().__init__(*args, **kwargs)

问题出在这三行:

class master(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

您继承自tk.Frame,但随后尝试调用tk.Tk__init__方法上述代码段的第一行和第三行需要就[=18]达成一致=].