我试图根据从Ttk.check按钮中 Select 的内容,在pyploy中显示不同的数据.为简单起见,在本例中,我将只try 更改标题.
import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
import numpy as np
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
# create data to plot
xdata = np.linspace(0, 100, 100)
ydata = 0.1*xdata ** 2
# create window
root = tk.Tk()
# create figure
fig = plt.Figure(figsize = (10, 3), dpi = 100)
ax = fig.add_subplot()
ax.plot(xdata, ydata)
plt.show()
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack()
i = 0
def change_title():
global i
i += 1
ax.set_title(f'Title number {i}')
print(f'Title changed to {i}')
change_title()
change_title()
checkbutton = ttk.Checkbutton(root, command=change_title).pack()
root.mainloop()
因此,每次调用CHANGE_TITLE()函数时,绘图标题中的数字应该会增加.
当直接从代码中调用函数时,这是有效的.但是,选中和取消选中复选按钮确实会调用该函数(并在控制台中生成预期的输出),但它不会更改标题.执行上面的代码并选中/取消选中复选框4次将得到以下结果:
- 剧情的标题将是《2号标题》.
- 控制台将输出‘标题已更改为6’
我不明白为什么会发生这种事.为什么当我直接调用CHANGE_TITLE()函数时标题会改变,而从CheckButton调用时标题却不会改变?