Python 2.7でループが実行されているときにボタンをクリックすると、Pythonがループから出てくるまでIDLEが動作を停止します。なぜ私はこれが起こっているのか分からないので、私はコード全体を添付しました。 Pythonはループの外に来るまで、私は停止やボタンの作品をクリックすると現在のループがPythonで終了するまでボタンが動作しない
import time
import Tkinter as tk
from Tkinter import StringVar
import threading
x="False"
def xval(*args):
for i in range(0,9):
global x
if(x=="False"):
print "x=false %d time"%i
time.sleep(1)
def stop(event):
resume_btn.configure(state="normal")
global x
x ="True"
print "execution stopped:%s"%x
def start(event):
global x
x ="False"
print "execution started:%s"%x
xval()
root = tk.Tk()
th = threading.Event()
t = threading.Thread(target=xval,args=(th,))
t.deamon=True
t.start()
x_btn = tk.Button(root, text="Stop", background="Snow", width=20)
x_btn.grid(row=0, column=4, sticky="W", padx=20, pady=5)
x_btn.bind('<Button-1>',stop)
resume_btn = tk.Button(root, text="Start", background="Snow", width=20)
resume_btn.configure(state="disabled")
resume_btn.grid(row=0, column=6, sticky="W", padx=20, pady=5)
resume_btn.bind('<Button-1>',start)
root.mainloop()
は、ここで、両方のボタンが更新されます最初に行くが、第2の時間もないxの値で正常に動作します。誰がなぜこれが起こっているのかを伝えることはできますか?
を行うには良い方法であると言うでしょう:/それは、クラスを使用せずに可能ですか? – YSR
クラスは良い方法です。 @ YSR –
:私は知っているし、私は確かに@BillalBEGUERADJだろうが、私はこのコードが必要な私のプロジェクトでそれらを使用していない^ _^'それがクラスなしでできるかどうか尋ねていた理由 – YSR