2017-02-07 4 views
0

tkinterでは、PythonのUpがクリックされたときにプログラムを作成しようとしています。数字に1が追加され(StringVarを使用して表示されます)、数値が10になると再開されます。私はこの部分を完成させることができましたが、一定の時間が経過した後もそれを有効にして番号を変更することはできません。たとえば、ある特定の時間だけUpボタンを押し続け、最後に取得した数字は6です。今度は、何度何回押しても、6にとどまります。Up。ここに私のコードです:スクリプトの実行中の関数を削除しますか? Tkinter Python 3.5

from tkinter import * 
root = Tk() 
hwd1 = 0 
mult = 1 
hwd = StringVar() 
hwd.set("0") 
def add1(event): 
    global hwd 
    global hwd1 
    on = True 
    if on: 
     hwd1 += 1*(mult) 
     hwd.set(str(hwd1)); 
    if hwd1 == 10: 
     hwd1 = 0 
     hwd.set("0") 

label = Label(root, textvariable=hwd) 
label.pack() 





root.bind_all('<Up>', add1) 

このコードは、私がやっていることの最初の部分を示しているが、私は2番目の部分をしようとすると、ここで私が行って何:このコードを使用してから、

from tkinter import * 
root = Tk() 
hwd1 = 0 
mult = 1 
hwd = StringVar() 
hwd.set("0") 

def deladd(): 
    global add1 
    del(add1) 

def add1(event): 
    global add1 
    global hwd 
    global hwd1 
    on = True 
    if on: 
     hwd1 += 1*(mult) 
     hwd.set(str(hwd1)); 
    if hwd1 == 10: 
     hwd1 = 0 
     hwd.set("0") 
    root.after(5000, deladd) 

label = Label(root, textvariable=hwd) 
label.pack() 




root.bind_all('<Up>', add1) 

add1 referenced before assignmentというエラーメッセージが表示され、なぜそれがわからないのですか。私は、あなたの時間のためにとても感謝をいくつかの助けをいただければと思います:)

-Jake

+0

なぜコールバック 'add1'の下で' global add1'を宣言していますか? – nbro

+0

これは間違いであったに違いありません、ごめんなさい:/ – Jake

+0

'add1'という名前の関数を削除しようとしているようです。あれは正しいですか?あるいは、 'add1'は変数であるはずですか? –

答えて

0

あなたは宣言が欠落している - deladd()があるため、問題がある

def deladd前に、ちょうどあなたのコードを編集して def add1を置きますadd1を呼び出しますが、最初の呼び出しではそれに到達できません。

+0

これは私のために何も変更されませんでした。 add1は整数ではなく関数なので、これはとにかく動作するとは思わない。 – Jake

+0

私の間違い - 私はそれを少し変えて使いました。 – Jake

関連する問題