没有数。一次调用一个函数?

时间:2012-11-22 12:03:50

标签: python

是否有任何方法可以计算在python中调用函数的次数? 我在GUI中使用了checkbutton。我已经为该checkbutton命令编写了一个函数,我需要根据checkbutton状态执行一些操作,我的意思是根据是否勾选。我的检查按钮和按钮语法是这样的

All = Checkbutton (text='All', command=Get_File_Name2,padx =48, justify = LEFT)
submit = Button (text='submit', command=execute_File,padx =48, justify = LEFT)

所以我认为没有。调用命令函数的次数,并根据其值,我可以决定是否勾选。请帮忙

2 个答案:

答案 0 :(得分:12)

您可以编写在函数调用后递增特殊变量的装饰器:

from functools import wraps

def counter(func):
    @wraps(func)
    def tmp(*args, **kwargs):
        tmp.count += 1
        return func(*args, **kwargs)
    tmp.count = 0
    return tmp

@counter
def foo():
    print 'foo'

@counter
def bar():
    print 'bar'

print foo.count, bar.count  # (0, 0)
foo()
print foo.count, bar.count  # (1, 0)
foo()
bar()
print foo.count, bar.count  # (2, 1)

答案 1 :(得分:2)

如果检查是否勾选了检查按钮是唯一需要的,为什么不只是checkbutton.ticked = true

实现这一点的一种方法是从Checkbutton创建一个子类(或者 - 如果可以的话 - 编辑现有的Checkbutton类)并只添加self.ticked属性。

class CheckbuttonPlus(Checkbutton):
    def __init__(self, text, command, padx, justify, ticked=False):
        super().__init__(text, command, padx, justify)
        self.ticked = ticked

编辑你的函数,使它改变你的CheckbuttonPlus - 对象的标记为not ticked

我不知道你的类是如何构造的,但是你应该从Checkbutton类中找到激活函数的方法,然后在CheckbuttonPlus -class中覆盖它(因为你不能编辑现有的Checkbutton类,在这种情况下,你甚至根本不需要CheckbuttonPlus课程。

修改:如果你正在使用Tkinter Checkbutton(看起来很像),你可能想检查一下: Getting Tkinter Check Box State