我正在使用 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 GUI 上单击“绘制”按钮后的图,多边形的起点停留在 (0,0),预计会随光标移动:
当我draw()在 tkinter 之外调用时,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()
牧羊人nacy
相关分类