python - 为什么我不能在课堂上使用 matplotlib 和 tkinter
问题描述
我在同时使用 matplotlib 和 tkinter 时遇到问题。我正在尝试使用单选按钮创建一个 matplot 图形并将其嵌入到 tkinter 在 Internet 上的一些示例和文档之后,我创建了以下代码:
import random
import matplotlib
import tkinter as Tk
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
matplotlib.use('TkAgg')
root = Tk.Tk()
root.wm_title("Embedding in TK")
class TKInterGUI():
def __init__(self, master,fig):
self.fig = fig
self.master = master
def test(self):
canvas = FigureCanvasTkAgg(self.fig[0], self.master)
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
ax = self.fig[0].add_axes([0.10, 0.7, 0.15, 0.15],facecolor='yellow')
r = RadioButtons(ax, ('2 Hz', '4 Hz', '0 Hz'))
fig = []
fig.append(plt.Figure(figsize=(5,5), dpi=100))
my_gui = TKInterGUI(root,fig)
my_gui.test()
Tk.mainloop()
此代码按预期生成图形和单选按钮。但是单选按钮不起作用。他们变得完全没有反应。现在,如果我将单选按钮代码更改为主程序,如下面的代码,一切正常:
import random
import matplotlib
import tkinter as Tk
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
matplotlib.use('TkAgg')
root = Tk.Tk()
root.wm_title("Embedding in TK")
class TKInterGUI():
def __init__(self, master,fig):
self.fig = fig
self.master = master
def test(self):
canvas = FigureCanvasTkAgg(self.fig[0], self.master)
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
fig = []
fig.append(plt.Figure(figsize=(5,5), dpi=100))
my_gui = TKInterGUI(root,fig)
my_gui.test()
ax = fig[0].add_axes([0.10, 0.7, 0.15, 0.15],facecolor='yellow')
r = RadioButtons(ax, ('2 Hz', '4 Hz', '0 Hz'))
Tk.mainloop()
谁能解释为什么第一个代码不起作用,但第二个代码起作用?
解决方案
推荐阅读
- ios - 如何在 ios swift 中执行另一个数据任务线程时暂停数据任务线程一段时间?
- hadoop - 在 Hadoop 中启用 RM HA 时,备用 ResourceManager (RM) 如何变为活动状态
- python - ImportError en el jupyter notebook 尽管安装了名为的库
- qt - 如何在 Qt 中使用 QImage 更改图像中的文本(前景)和背景颜色?
- python - 张量必须来自与张量相同的图
- node.js - 如何使用多个 POST 端点构建 REST api
- cucumber - Capybara升级后两次启动puma
- php - Apache .htaccess 没有正确执行
- nginx - 403 Forbidden - Nginx - oracle云实例
- react-native - React Navigation (V2):如何在 Drawer Navigator 中设置 Stack Navigator 的 Icon 和 label?