Tkinter类中的参数数量

时间:2014-03-31 20:43:55

标签: python class python-2.7 tkinter

相对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)

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在没有更多代码的情况下理解你的问题有点困难,但希望这个答案能指出你正确的方向。

首先,澄清一下,方法只是可以通过类的实例访问的函数,所以是的,这些是方法,但它们也是函数 - 不要太挂了它。接下来,我不认为继承是必要的 - 继承将是一个继承属性的类,我相信你所有的方法只在一个类中(如果我错了,请纠正我)。 / p>

现在,关于你的代码:它给你一个错误,你的一个方法需要一些参数,你给它一个不同的数字。好吧,对我来说,看起来你只需要为整个过程传递一个参数:student_list_tempstudent_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.htmlhttps://docs.python.org/2/tutorial/modules.html以清除您可能遇到的任何课程和功能问题。