gpt4 book ai didi

python - 从 matplotlib 到 tkinter 获取值(value)

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:09 24 4
gpt4 key购买 nike

我正在从 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 事件循环时才有效。

关于python - 从 matplotlib 到 tkinter 获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54694540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com