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

时间:2015-07-31 09:32:59

标签: python matplotlib tkinter tkinter-canvas

我正在TkInter窗口中绘制2个不同的数字。我正在使用TkInter,因为我稍后会添加一些按钮。仅供参考,这两个数字有不同的大小,因为我只与大的互动,留下小的用于其他用途。当窗口打开时,焦点始终设置在小窗口上,因此我需要使用TAB将其切换为大图。我尝试了focus()focus_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()

1 个答案:

答案 0 :(得分:-1)

你可以尝试选择小图的设置以防止它被允许聚焦:

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