Python说我的函数不带参数

2024-04-26 23:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个当按下按钮时调用的函数:

def generate_noise():
    var = self.add_snr_textbox.get()
    controller.generate_noise(var)

它对应于我的控制器类中的函数:

^{pr2}$

但是,当我尝试运行它时,我得到了错误TypeError: generate_noise() takes no arguments (1 given)。为什么会这样?在

更多细节

main.py

from Tkinter import *
import ttk
import tkFileDialog
import controller

root = Tk()
content = ttk.Frame(root)
controller = controller.Controller()


class Main(Frame):

...

def generate_noise():
        var = self.add_snr_textbox.get()
        controller.generate_noise(var)

controller.py

class Controller():
    def generate_noise(self, snr):
            print snr

Tags: 函数pyimportselfaddgetvardef
1条回答
网友
1楼 · 发布于 2024-04-26 23:24:04

您给出的第一个Main.generate_noise()函数定义(没有参数的定义)引用了self变量。但是,由于您没有打算引用的全局self,因此没有给Main.generate_noise()函数一种访问self的方法。您需要将self作为参数添加到Main.generate_noise签名中,这样Main.generate_noise可以使用

def generate_noise(self):

而不是

^{pr2}$

您得到的错误表明您已经将此函数作为实例方法在代码中的其他地方调用,因此此更改应该同时修复TypeError和如果您用另一种方法修复的话,self的错误。在

编辑:根据提供的其他信息,我已经澄清了在这篇文章中使用的名字。在

相关问题 更多 >