组合框正在关注
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()
我有一个我真的无法解决的问题。已经搜索了几个小时。我有一个简单的 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()