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]达成一致=].
我正在尝试为已经可用的 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]达成一致=].