首页 > 解决方案 > 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()

标签: pythonmatplotlibtkinter

解决方案


您将需要绑定到整个窗口而不仅仅是图:

# ~ con=fig.canvas.mpl_connect('key_press_event',myfun)
win.bind('<KeyPress>',myfun)

推荐阅读