【问题标题】:combobox is taking focus组合框正在成为焦点
【发布时间】:2021-01-17 21:37:31
【问题描述】:

我有一个我真的无法解决的问题。这是几个小时的搜索。我有一个简单的 tkinter 窗口,其中有一个组合框、一个 FigureCanvasTkAgg 上的图形和一个 Matplotlib 文本框。问题是当我按下 Enter (在文本框上)时,我想在控制台上打印一些东西。我通过使用text_box.on_submit() 命令来做到这一点。文本框可以在这里找到Matplotlib Widgets。如果我不触摸组合框,它工作得很好。但是,当我从组合框中选择某些东西(一个选项)时,它会获得焦点并输入(sumbit 命令)不适用于文本框。我不能在 TextBox 上写事件,而是在我键入时写在组合框上。而且即使我点击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()

【问题讨论】:

    标签: python matplotlib tkinter textbox


    【解决方案1】:

    解决此问题的最简单方法可能是将焦点设置到使用.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()
    

    【讨论】:

    • 非常感谢您抽出宝贵时间。它确实解决了我的问题。!!!
    猜你喜欢
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多