【问题标题】:Number of arguments in Tkinter classesTkinter 类中的参数数量
【发布时间】:2014-03-31 20:43:54
【问题描述】:

相对的菜鸟在这里!我正在运行 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)

提前感谢您的帮助!

【问题讨论】:

  • 您遇到的确切错误是什么?

标签: python class python-2.7 tkinter


【解决方案1】:

如果没有更多代码,理解您的问题会有些困难,但希望这个答案能够为您指明正确的方向。

首先,澄清一下,方法只是可以通过类的实例访问的函数,所以是的,这些是方法,但它们也是函数——不要太拘泥于此。接下来,我认为这里不需要继承——继承将是一个类从另一个类继承属性,我相信你所有的方法都只在一个类中(如果我弄错了,请纠正我)。

现在,至于您的代码:它给您一个错误,您的一个方法采用多个参数,而您给了它一个不同的数字。好吧,对我来说,您似乎只需要为整个过程传递一个参数: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 以解决您可能遇到的任何类和函数问题。

【讨论】:

  • 非常感谢很多,伙计。我很高兴我只需要整理我的代码——我担心我错过了一些巨大的东西。但如果没有你的帮助,我永远不会发现这一点,这一点非常清楚。即使我不是。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2018-05-23
  • 2016-05-02
相关资源
最近更新 更多