Я пишу сценарий, использующий tkinter и matplotlib для обработки данных, некоторые части кода требуют выбора многоугольника для выбора интересующей области.Однако PolygonSelector не может обнаружить движение курсора.
Следует отметить, что эта проблема возникает, когда включен интерактивный режим рисунка matplotlib.
Упрощенный код и результат показаны ниже:
#!/usr/bin/env python3
import matplotlib
matplotlib.use("TkAgg")
import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.widgets import PolygonSelector
root = tk.Tk()
def draw():
fig = plt.figure()
ax = fig.add_subplot(111)
plt.ion() # interactive mode is on
plt.show()
def onselect(data_input):
print(data_input)
PS = PolygonSelector(ax, onselect)
tk.Button(root, text='draw', command=draw).pack()
root.mainloop()
Это график после нажатия кнопки «рисовать» в графическом интерфейсе tkinter, начальная точка многоугольника застряла в точке (0,0), ожидается, что она будет двигаться с курсором:

Когда я звоню draw()
за пределами Ткинтера, PolygonSelector работает нормально:
def draw():
fig = plt.figure()
ax = fig.add_subplot(111)
plt.ion() # interactive mode is on
plt.show()
def onselect(data_input):
print(data_input)
PS = PolygonSelector(ax, onselect)
a = input() # prevent window from closing when execution is done
draw()
