0

Pythonで関数が呼び出された回数をカウントする方法はありますか?GUIでチェックボタンを使用しています。そのチェックボタンコマンドの関数を作成しました。チェックボタンのステータスに基づいて、つまりチェックされているかどうかに基づいて、いくつかのアクションを実行する必要があります。私のチェックボタンとボタンの構文は次のとおりです

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

だから私は数え切れないほどです。コマンド関数が呼び出されることが多く、その値に基づいて、チェックされているかどうかを判断できます。助けてください

4

2 に答える 2

13

関数呼び出し後に特別な変数をインクリメントするデコレータを書くことができます:

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)
于 2012-11-22T12:09:46.310 に答える
2

チェックボタンがチェックされているかどうかをチェックすることが必要な唯一のことである場合、なぜそれをしないのcheckbutton.ticked = trueですか?

これを実装する1つの方法は、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チェックボタンを使用している場合(非常によく似ています)、これをチェックすることをお勧めします: Tkinterチェックボックスの状態を取得する

于 2012-11-22T12:07:04.110 に答える