是否有任何方法可以计算在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)
所以我认为没有。调用命令函数的次数,并根据其值,我可以决定是否勾选。请帮忙
答案 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