函数作为 tkinter 按钮命令正确执行但不在脚本中

Function executes correctly as a tkinter button command but not in the script

这是我在 Whosebug 上的第一个问题。潜伏到此为止就解决了我所有的问题

我是python新手,我还没有完全理解'self'背后的含义。

我定义了一个函数(不是方法。它不在 class 中)作为

def pcal_thresh(self):
    p_th = p_thresh.get()
    print('p_th')

我试图在 2 个不同的条件下使用它。首先作为 Tkinter 的命令

p_thresh = tk.Scale(calibration, from_=255, to=1, length=int(y_height*1.2), command=pcal_thresh)

其次,在另一个函数里面

def confirm():
    if not top_distance == 0:
        pcal_thresh()

在这个确切的配置中,函数“pcal_thresh()”作为 Tkinter 命令正确执行,但不在另一个函数中。如果我从声明中删除 'self' ,则相反。在函数内部使用时工作正常,但不能作为 Tkinter 命令使用。这可能是什么问题?

self没有默认值,所以即使你不使用,调用[=13时还是需要提供一个值=].作为回调,它在调用时接收新的比例值。

要么提供一个伪参数

def confirm():
    if not top_distance == 0:
        pcal_thresh(None)

或提供默认值:

def pcal_thresh(self=None):
    p_th = p_thresh.get()
    print('p_th')