python - 从 matplotlib 获取价值到 tkinter
问题描述
我正在从 tkinter gui 打开 matplotlib Windows。将限制返回给 tkinter 以处理具有预定义限制的下一个窗口打开事件将很有用。为此,我在 matplotlib 窗口的菜单中定义了一个新按钮,它应该可以将限制写入控制台,但不能写入 TK 窗口。
我尝试了以下方法,但由于未知原因而崩溃:
from Tkinter import *
import matplotlib.pyplot as plt
master = Tk()
e = Entry(master)
e.pack()
e.focus_set()
def callback():
def a():
print(ax.get_xlim())
e.delete(0, END)
e.insert(0, ax.get_xlim()[0])
fig,ax = plt.subplots(1, 1)
plt.plot([1, 2, 3])
fig.canvas.manager.toolbar.addAction("Write limit\nback to gui",a)
plt.show()
b = Button(master, text="Open matplotlib", width=15, command=callback)
b.pack()
mainloop()
我尝试过的一个可行的替代方法是使用回调,但即时显示信息会非常好。
from Tkinter import *
import matplotlib.pyplot as plt
master = Tk()
global A
A=[]
e = Entry(master)
e.pack()
e.focus_set()
def func(Hubbel):
if len(A):
e.delete(0, END)
e.insert(0, A[0])
master.bind("<FocusIn>", func)
def callback():
def a():
print(ax.get_xlim())
print(A)
if len(A)==0:
A.append(ax.get_xlim())
else:
A[0]=ax.get_xlim()
fig,ax = plt.subplots(1, 1)
plt.plot([1, 2, 3])
fig.canvas.manager.toolbar.addAction("Write limit\nback to gui",a)
plt.show()
b = Button(master, text="Open matplotlib", width=15, command=callback)
b.pack()
mainloop()
解决方案
plt.show()
阻止 tkinter 应用程序的事件循环的执行。关闭创建的绘图窗口后,您将插入正确的值,plt.show()
因为此时正在处理 tk 事件。
避免这种情况的一种方法是改为调用fig.show()
。这只会起作用,因为您已经运行了 tk 事件循环。
推荐阅读
- javascript - 如何使用 aws-serverless-express 和 lambda 上传文件?
- python - TKinter 条目的 Python 输出具有 Float64
- angular - 如何将 Angular Material 扩展面板箭头图标更改为加号(+)和减号(-)
- python - Python中的send_keys问题
- android - 如何在 Android 的单个页面中获取多个 YouTube PlayListItem
- javascript - 手动关闭浏览器后,EventListener 是否仍处于开启状态?(木偶师)
- c# - 等效于 ENTITY FRAMEWORK / LINQ 表达式中的 TSQL“IN(subSelect)”
- vb.net - TextBox 上的 VB.NET 密钥捕获以运行不同的 SUB
- tensorflow - 如何检查 K 折验证中的训练准确度
- r - 在 R 中解析日期时间的“m/%d/%Y %H:%M”形式