组合框正在关注

combobox is taking focus

我有一个我真的无法解决的问题。已经搜索了几个小时。我有一个简单的 tkinter window 和一个组合框,一个 FigureCanvasTkAgg 上的数字和一个 Matplotlib 文本框。问题是当我按 Enter(在 TextBox 上)时,我想在控制台上打印一些东西。我通过使用 text_box.on_submit() 命令来做到这一点。可以在此处找到文本框 Matplotlib Widgets。如果我不触摸组合框,它会很好用。但是,当我从组合框中选择某些东西(一个选项)时,它需要焦点并且输入(sumbit 命令)不适用于文本框。我不能在 TextBox 上写事件,而是在我键入时在组合框上写。而且即使我点击文本框,我也无法解决它...

import tkinter as tk
from tkinter import ttk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox

win = tk.Tk()

fig,ax = plt.subplots()
ax.plot([1,7,3,6,9,3,6])
canvas = FigureCanvasTkAgg(fig, master=win)
canvas.get_tk_widget().pack()
canvas.draw()

textboxax = plt.axes([0.92, 0.35, 0.06, 0.07])
text_box = TextBox(textboxax, '', initial='',color='gray',hovercolor='white')
text_box.on_submit(lambda x: print('helloo'))

cb = ttk.Combobox(win,values=['red','white','black','yellow','blue'])

cb.pack()

win.mainloop()

解决这个问题的最简单方法可能是将焦点设置到使用 .focus_set()

单击的小部件

这是一个例子:

import tkinter as tk
from tkinter import ttk
from matplotlib.figure import Figure 
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox

def focus_widget(event):
    event.widget.focus_set()

win = tk.Tk()

win.bind('<Button>', focus_widget)

fig,ax = plt.subplots()
ax.plot([1,7,3,6,9,3,6])
canvas = FigureCanvasTkAgg(fig, master=win)
canvas.get_tk_widget().pack()
canvas.draw()

textboxax = plt.axes([0.92, 0.35, 0.06, 0.07])
text_box = TextBox(textboxax, '', initial='',color='gray',hovercolor='white')
text_box.on_submit(lambda x: print('helloo'))

cb = ttk.Combobox(win,values=['red','white','black','yellow','blue'])

cb.pack()

win.mainloop()