У меня есть такой сценарий:
button_a = tk.Button(self, text="<", command=self.button_a_clicked)
Я предполагаю, что обратный вызов button_a_clicked
выполняется в отдельном потоке. Затем я хочу, чтобы другая кнопка button_b
сначала остановила button_a_clicked
, а затем выполнила свою задачу.
button_b = tk.Button(self, text="<", command=self.button_b_clicked)
Итак, как мне добиться этого внутри button_b_clicked
обратного вызова. В любом случае это достижимо?
Я пытался сделать логическое значение таким, чтобы внутри button_b_clicked
я устанавливал его в значение false, а внутри button_a_clicked
всякий раз, когда это логическое значение было ложным, я выходил из метода. Примерно так:
def button_a_clicked(self):
self.flag = True
while True:
if not self.Flag:
return
... rest of code ...
def button_b_clicked(self):
self.flag = False
... button b clickec logic (containing some loop) ...
Однако я вижу, что это условие в button_a_clicked
достигается в какой-то момент времени после того, как button_b_clicked уже запущен и выполнил несколько итераций внутри него. Так есть ли лучший способ принудительного завершения button_a_clicked
обратного вызова?
Edit:
Точный сценарий, который я делаю, заключается в следующем:
https://github.com/b-safwat/video_labeling_tool_for_action_detection/blob/master/VideoPlayer.py#L111