मुझे 'फ़ीड' को रोकने में समस्या आ रही है; रद्द करने का तर्क बाद के तरीके पर कोई प्रभाव नहीं प्रतीत होता है। हालांकि "फीड रुक गया" कंसोल पर मुद्रित है।मैं फ़ंक्शन के बाद टिंकर को कैसे रोकूं?
मैं एक बटन रखने का प्रयास कर रहा हूं जो फ़ीड शुरू करेगा और दूसरा फ़ीड को रोक देगा।
from Tkinter import Tk, Button
import random
def goodbye_world():
print "Stopping Feed"
button.configure(text = "Start Feed", command=hello_world)
print_sleep(True)
def hello_world():
print "Starting Feed"
button.configure(text = "Stop Feed", command=goodbye_world)
print_sleep()
def print_sleep(cancel=False):
if cancel==False:
foo = random.randint(4000,7500)
print "Sleeping", foo
root.after(foo,print_sleep)
else:
print "Feed Stopped"
root = Tk()
button = Button(root, text="Start Feed", command=hello_world)
button.pack()
root.mainloop()
उत्पादन के साथ
:
Starting Feed
Sleeping 4195
Sleeping 4634
Sleeping 6591
Sleeping 7074
Stopping Feed
Sleeping 4908
Feed Stopped
Sleeping 6892
Sleeping 5605
मुझे पूरी तरह से यकीन नहीं है कि कैसे काम करता है, लेकिन यह मुझे थ्रेडिंग मुद्दे की तरह दिखता है। यदि आप वैश्विक (थ्रेड सुरक्षित) वैश्विक को रद्द करते हैं, तो क्या इससे समस्या हल हो जाती है? – mklauber
@mklauber: नहीं, थ्रेडिंग समस्या नहीं। टिंकर एकल-थ्रेडेड है। –
@ ब्रायन ओक्ले: धन्यवाद। यही कारण है कि मैंने एक टिप्पणी के रूप में पोस्ट किया। मुझे यकीन नहीं था इसलिए मैं सिर्फ सवाल उठाना चाहता था। – mklauber