相对noob在这里!我正在运行2.7,如果有帮助的话。
我试图在一个不同的函数中调用我的主应用程序类中定义的函数(我认为它被称为继承?)但是我仍然遇到了我放入函数的args数量问题!
这是函数(它被称为方法吗?如果不是,那是什么方法)我试图打电话:
def student_list_updater(self, list):
self.StudentListDisplay.delete(0, END)
for student in list:
self.StudentListDisplay.insert(END, student)
这就是我调用它的功能(它继承了student_list_updater,对吧?):
def OnRemoveClick(self, student_list_updater):
self.student_list_updater = student_list_updater
index = self.StudentListDisplay.curselection()
index = int(index[0])
del student_list_temp[index]
self.student_list_updater(student_list_temp)
提前感谢您的帮助!
答案 0 :(得分:0)
在没有更多代码的情况下理解你的问题有点困难,但希望这个答案能指出你正确的方向。
首先,澄清一下,方法只是可以通过类的实例访问的函数,所以是的,这些是方法,但它们也是函数 - 不要太挂了它。接下来,我不认为继承是必要的 - 继承将是一个继承属性的类,我相信你所有的方法只在一个类中(如果我错了,请纠正我)。 / p>
现在,关于你的代码:它给你一个错误,你的一个方法需要一些参数,你给它一个不同的数字。好吧,对我来说,看起来你只需要为整个过程传递一个参数:student_list_temp
到student_list_updater()
。再一次,我无法确定这会解决您的问题,因为您发布的代码不足,但这可能有效:
def student_list_updater(self, studentlist): #change list to studentlist,
self.StudentListDisplay.delete(0, END) #Python already has a list() method
for student in studentlist:
self.StudentListDisplay.insert(END, student)
def OnRemoveClick(self): #Remove student_list_updater from the args, it has no value
#self.student_list_updater = student_list_updater #this doesn't do anything
index = self.StudentListDisplay.curselection() #This part I can't really comment on
index = int(index[0]) #without knowing the contents of the
del student_list_temp[index] #Listbox and student_list_temp,
self.student_list_updater(student_list_temp) #but this should call student_list_updater()
#and update the Listbox if it's working
我想指出的最后一件事是你如何调用OnRemoveClick()
可能会改变。如果您从Button中调用它,它将如下所示:
self.btn = Button(self, text='GO', command=self.OnRemoveClick)
请注意,您没有向其传递任何参数。
希望有所帮助。您还可以查看https://docs.python.org/2/tutorial/classes.html和https://docs.python.org/2/tutorial/modules.html以清除您可能遇到的任何课程和功能问题。