我有一个按下按钮时调用的函数:
def generate_noise():
var = self.add_snr_textbox.get()
controller.generate_noise(var)
这对应于我的控制器类中的函数:
def generate_noise(self, snr):
print snr
然而,当我尝试运行它时,我收到错误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
答案 0 :(得分:0)
您提供的第一个Main.generate_noise()
函数定义(没有参数的函数)引用self
变量。但是,由于您没有想要引用的全局self
,因此您无法为Main.generate_noise()
函数提供访问self
的方法。您需要将self
作为参数添加到Main.generate_noise
签名中,以便Main.generate_noise
可以使用
Main
的实例
def generate_noise(self):
而不是
def generate_noise():
您收到的错误表明您已经在代码中的其他位置调用此函数作为实例方法,因此此更改应修复TypeError
和您尝试使用时遇到的错误self
如果您以另一种方式解决了这个问题。
编辑:根据提供的其他信息,我已经澄清了这篇文章中使用的名称。