python - tkinter 组合框获得全部焦点并且图形连接丢失
问题描述
嗨,当我将fig.canvas.mpl_connect与tkinter组合框一起使用时,我遇到了问题。我只是将我的数字连接到我的键盘。但是,当我使用组合框选择一种颜色(组合框的值只是我的图形的颜色),然后我绘制图形时,连接丢失。但是,在我从组合框中选择一个值之前,连接有效。请记住,如果我不选择任何值并让当前值,它可以工作。但是,如果我选择一个值,它不会(焦点在组合框上,当我按下键盘键打印“我可以打印这个”时,我正在写在组合框上)。
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from tkinter import ttk
import tkinter as tk
import matplotlib
win=tk.Tk()
def myplot():
ax.plot([1,2,3,4,5,6],color=cb.get())
canvas.draw()
def myfun(event):
print('i can print this')
bt=tk.Button(win,text="plot",command=myplot);bt.grid(row=2,column=1)
cb=ttk.Combobox(win,state="readonly",values=['red','blue','green','yellow']);cb.grid(row=0,column=1)
cb.current(0)
fig,ax=plt.subplots()
canvas = FigureCanvasTkAgg(fig, master=win)
canvas.get_tk_widget().grid(row=0,column=0)
canvas.draw()
con=fig.canvas.mpl_connect('key_press_event',myfun)
win.mainloop()
解决方案
您将需要绑定到整个窗口而不仅仅是图:
# ~ con=fig.canvas.mpl_connect('key_press_event',myfun)
win.bind('<KeyPress>',myfun)
推荐阅读
- angular - 如何通过 CDK 覆盖包含包含其他非 HTML 元素(如 mat-icon)的 Angular 组件
- oracle - ISO8859-15 (Latin-9) 是 UTF-8 的完整子选择吗?
- java - 在java中声明自定义可配置应用程序的配置?
- git - Azure DevOps:每次合并时附加工作项的数量不断增加
- python - 运行长时间的子进程并在执行结束前获取标准输出
- java - 数组是否应该比 ArrayLists 快这么多?
- webpack - 无法使用“html-loader”解析资产
- c# - c# 异步调用泛型委托
- laravel - Laravel 7 - return view()->with('some data) 是如何工作的?
- python - 关于连体CNN的准确性