Ran*_*Rex 3 python tkinter python-3.x
目前正试图在Python中构建一个GUI,特别是我坚持这个部分.每次我尝试运行我的代码时,它只会抛出错误TypeError: __init__() got multiple values for argument 'master'.我似乎无法找到我传递的价值超过一个值的地方,这让我摸不着头脑.我尝试搜索错误,但其他人列出的修复程序我看不到如何让它们与这个一起工作.任何指导都将非常感谢.请参阅以下代码示例:
class Plotter(tk.Canvas):
"""Creates a canvas for use in a GUI
Plotter() -> Canvas
"""
def __init__(self, master, **kwargs):
super().__init__(self, master = master, **kwargs)
self.bind("<Configure>", self.on_resize)
self.height = self.winfo_reqheight()
self.width = self.winfo_reqwidth()
self.bg = 'white'
self.relief = 'raised'
class AnimalDataPlotApp(object):
"""This is the top level class for the GUI, and is hence responsible for
creating and maintaining instances of the above glasses
"""
def __init__(self, master):
"""Initialises the window and creates the base window for the GUI.
__init__() -> None
"""
master.title('Animal Data Plot App')
self._master = master
self._text = tk.Text(master)
self._text.pack
menubar = tk.Menu(master)
master.config(menu = menubar)
filemenu = tk.Menu(menubar) #puts filemenu into the menubar
menubar.add_cascade(label = 'File', menu = filemenu)
filemenu.add_command(label = 'Open', command = self.open_file)
#frame for canvas
plotter_frame = tk.Frame(master, bg = 'red')
plotter_frame.pack(side = tk.RIGHT, anchor = tk.NW, fill = tk.BOTH, expand = True)
#frame for buttons
button_frame = tk.Frame(master, bg = 'yellow')
button_frame.pack(side=tk.TOP, anchor=tk.NW, ipadx=50, fill = tk.X)
#Label on the top left
left_label = tk.Label(button_frame, text='Animal Data Sets', bg='orange')
left_label.pack(side=tk.TOP, anchor=tk.N, fill=tk.X)
#second frame, for selection list
selection_frame = tk.Frame(master, bg = 'blue')
selection_frame.pack(side = tk.LEFT, anchor=tk.NW, fill = tk.BOTH, expand = True)
#draw buttons in frame
select = tk.Button(button_frame, text ='Select')
select.pack(side=tk.TOP, anchor=tk.N)
deselect = tk.Button(button_frame, text='Deselect')
deselect.pack(side=tk.TOP, anchor=tk.N)
self.selectionbox = SelectionBox(selection_frame)
self.selectionbox.pack(side = tk.TOP, expand = True, fill=tk.BOTH)
#self._selectionbox.show_animals(self._data)
self.plotter = Plotter(plotter_frame)
self.plotter.pack(side = tk.TOP, expand = True, fill=tk.BOTH)
Run Code Online (Sandbox Code Playgroud)
super().__init__(self, master = master, **kwargs)
Run Code Online (Sandbox Code Playgroud)
如果您正在使用super(),则无需self明确指定.
您正在收到该错误,因为self它被解释为参数master.所以就像你打电话一样__init__(master=self, master=master, **kwargs).
问题在以下行中Plotter.__init__()-
super().__init__(self, master = master, **kwargs)
Run Code Online (Sandbox Code Playgroud)
当调用父级的__init__方法时,您不需要传递self参数,当您这样做时,它会被视为master父级的参数,然后当您尝试传递masteras时master=master,它会导致错误。
你应该简单地做 -
super().__init__(master = master, **kwargs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3915 次 |
| 最近记录: |