В python 2.7, если я нажимаю кнопку, когда цикл работает, 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()
Здесь обе кнопки работают отлично в первом ходу, но второй раз ни значения х обновляется, когда я нажимаю на остановке, ни кнопка работает до питон выходит из цикла. Может кто-нибудь сказать, почему это происходит.
:/возможно без использования классов? – YSR
Занятия хорошими манерами. Вы должны учиться хорошим манерам. @ YSR –
: D я знаю, и я, конечно, буду @BillalBEGUERADJ, но я не использовал их в своем проекте, где этот код требуется^_^'Вот почему я спрашивал, можно ли это сделать без классов – YSR