注意,我尝试使用正确的格式将其放入堆栈溢出,但是即使按了代码格式化按钮,它也无法处理响应。有人可以帮我吗?我在这里发布时没有格式设置,因为我需要很快的帮助。我知道这个论坛上的很多人都非常擅长编程,因此我想伸出援手。
我正在使用python开发应用程序,更具体地说,我正在将Tkinter用于用户界面。我需要在应用程序中创建二十多个新页面,因此,我想到了使用for循环和Outline类结构,以创建新实例(作为它们自己的页面,稍后将它们链接到周围)使用按钮的应用程序)作为我使用的类。但是,运行代码时,我继续收到以下错误:
File "setup.py", line 215, in <module>
pages_dict[info_req[info][filetype][0]] = outline_info(new_object)
TypeError: __init__() takes exactly 4 arguments (2 given)
我理解为什么这样做是有道理的,因为init函数定义包含4个参数,但是我不确定如何使控制器(在初始应用程序类中定义)和父窗口部分成为参数Outline_info类的实例,因为在这些情况下我无法引用self,因为直到声明点之前,这些类都还没有被声明或组成(如果这种解释似乎令人困惑,请查看下面的代码以获取相关信息)以及进一步的澄清。)
下面显示了我的代码节选,以解决上述问题。如果需要更多信息以了解或澄清我的问题,请告诉我。下面的代码不包含我定义的其他许多类,也没有包含名为info_req的数组,其中包含信息数据库。
class Application(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
# the container is where we'll stack a bunch of frames
# on top of each other, then the one we want visible
# will be raised above the others
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 (PageOne, PageThree, PageFour, indpage, familypage, FinalPage):
page_name = F.__name__
frame = F(parent=container, controller=self)
self.frames[page_name] = frame
# put all of the pages in the same location;
# the one on the top of the stacking order
# will be the one that is visible.
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame("PageOne")
def show_frame(self, page_name):
'''Show a frame for the given page name'''
frame = self.frames[page_name]
frame.tkraise()
class outline_info(tk.Frame):
def __init__(self, parent, controller, info_type_array):
count = 0 # Just for reference
tk.Frame.__init__(self, parent)
self.controller
first_title = Label(self, text=info_type_array[0]).grid(row=1,column=1)
for i in range(1, len(info_type_array)):
text_first = Label(self, text=str(info_type_array[i])).grid(row=d+1, column=1)
entry_first = Entry(self, width=20).grid(row=d+1, column=2)
count += 1
def submit_again():
controller.show_frame("indpage")
return "hello" # Do I still need this?
submit2 = Button(self, text="Submit Details", bg="blue", command=submit_again)
submit2.pack(side=BOTTOM)
pages_dict = {}
for i in range(0, len(info_req)):
for filetype in range(0, len(info_req[i])):
if filetype!=0:
new_object = info_req[i][filetype]
if info_req[i][filetype][0] not in pages_dict.keys():
pages_dict[info_req[i][filetype][0]] =outline_info(new_object)
非常感谢。
编辑:
以下是info_req的代码段。我正在创建一个初学者的旅行指南,但是我真的很想在原始帖子中学习如何解决该问题。
info_req = [[[“访问的地方”],[“国家1”,“访问的城市”,“建议”],[“国家2”,“访问的城市”,“建议”]],[[“ “最喜欢的食物”],[“食物1”,“美食”,“口味”,“风味”,[“食物2”,“美食”,“味道”,“风味”]],[[“最喜欢的航空公司” ],[“航空公司1”,“组织”,“位置”,“持续时间”]]]