Python 在TkInter中的图形画布之间更改焦点

Python 在TkInter中的图形画布之间更改焦点,python,matplotlib,tkinter,tkinter-canvas,Python,Matplotlib,Tkinter,Tkinter Canvas,我正在一个TkInter窗口中绘制两个不同的图形。我正在使用TkInter,因为稍后我将添加一些按钮。仅供参考,这两个数字有不同的大小,因为我将只与大数字交互,而将小数字留作其他用途。当窗口打开时,焦点总是设置在小图形上,因此我需要使用选项卡将其切换到大图形。我尝试了许多组合focus()或focus\u set(),但无论我尝试了什么,它总是以小图形为焦点打开窗口 我能做什么 我在这里附上一个简单的代码来说明我的问题 import matplotlib matplotlib.use('TkAg

我正在一个TkInter窗口中绘制两个不同的图形。我正在使用TkInter,因为稍后我将添加一些按钮。仅供参考,这两个数字有不同的大小,因为我将只与大数字交互,而将小数字留作其他用途。当窗口打开时,焦点总是设置在小图形上,因此我需要使用选项卡将其切换到大图形。我尝试了许多组合
focus()
focus\u set()
,但无论我尝试了什么,它总是以小图形为焦点打开窗口

我能做什么

我在这里附上一个简单的代码来说明我的问题

import matplotlib
matplotlib.use('TkAgg')

from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import sys
import Tkinter as tk

root = tk.Tk()
root.wm_title("Embedding in TK")

f1 = Figure(figsize=(7.5,10), dpi=100)
a1 = f1.add_subplot(111)
f2 = Figure(figsize=(7.5,5), dpi=100)
a2 = f2.add_subplot(111)

t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)

a1.plot(t,s)
a2.plot(t,s)

canvas1 = FigureCanvasTkAgg(f1, master=root)
canvas2 = FigureCanvasTkAgg(f2, master=root)
canvas1.show()
canvas2.show()
canvas1.get_tk_widget().pack(side=tk.LEFT, fill=tk.BOTH)
canvas2.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH)

def print_key(event):
    print 'you pressed '+event.key

cid = f1.canvas.mpl_connect('key_press_event', print_key)

#SOMETHIN MISSING HERE IN ORDER TO SET THE FOCUS ON THE BIGGER WINDOW

tk.mainloop()

您可以尝试更改小人物的设置,以防止其被允许聚焦:

canvas2.get_tk_widget().configure(takefocus=False)

不,它不起作用。。。它真的对你有用吗?也许是我的TkInter或Python版本的问题。我没有matplotlib,我只是安装并试用了它,它不仅是你的安装,在我的上也不起作用,但是当我手动将焦点从第二个绘图上移开时,它无法取回,但我似乎无法通过编程切换焦点。。。