python - 如何知道tkinter中对象的名称

标签 python select tkinter

我只需要知道当我按下一个键时如何获取两个文本框之一的名称。

我有两个文本框,一个名为“Text1”,第二个名为“Text2”。我希望当我将光标放在第一个上时,我按一个键(如 p)并打印“您的光标位于 Text1 上!”当我将光标放在第二个文本框上时也是如此。 有可能的?

最佳答案

我们可以使用绑定(bind)来获得您正在寻找的行为类型。

我们需要使用框架来保存每个文本小部件,然后绑定(bind) <Enter>甚至是每个帧,然后向方法发送命令以将焦点设置在鼠标当前所在的帧上。

我们还装订了这封信p每个框架将使用 lambda print 语句打印出该框架内文本框的名称。

这是一个简单的示例,如果按p,您可以将鼠标悬停在每个文本框上,而无需单击鼠标。您将在控制台中看到文本框的名称。

import tkinter as tk

root = tk.Tk()

def set_focus(x):
    x.focus_force()

text1_frame = tk.Frame(root)
text1_frame.pack()
text1_frame.bind("p", lambda x: print("text1"))
text1_frame.bind("<Enter>", lambda x: set_focus(text1_frame))

text2_frame = tk.Frame(root)
text2_frame.pack()
text2_frame.bind("p", lambda x: print("text2"))
text2_frame.bind("<Enter>", lambda x: set_focus(text2_frame))

text1 = tk.Text(text1_frame, height = 4, width = 10)
text1.pack()

text2 = tk.Text(text2_frame, height = 4, width = 10)
text2.pack()

root.mainloop()

不操纵焦点的稍微不同的方法是仅使用鼠标的当前位置更新变量并绑定(bind) p获取 root 权限并调用打印函数。

import tkinter as tk

root = tk.Tk()
m_location = "root"

def mouse_location(x):
    global m_location
    m_location = x

text1_frame = tk.Frame(root)
text1_frame.pack()
text1_frame.bind("<Enter>", lambda x: mouse_location("text1"))
text1_frame.bind("<Leave>", lambda x: mouse_location("root"))

text2_frame = tk.Frame(root)
text2_frame.pack()
text2_frame.bind("<Enter>", lambda x: mouse_location("text2"))
text2_frame.bind("<Leave>", lambda x: mouse_location("root"))

text1 = tk.Text(text1_frame, height = 4, width = 10)
text1.pack()

text2 = tk.Text(text2_frame, height = 4, width = 10)
text2.pack()

def print_if(event = None):
    global m_location
    print(m_location)

root.bind("p", print_if)


root.mainloop() 

关于python - 如何知道tkinter中对象的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45849440/

相关文章:

python - 如何动态训练 LSTM 模型?

php - Form::model 绑定(bind) Laravel 与 <select multiple>

javascript - 为什么 "HTML file select"会改变所选文件的顺序并按字母顺序对它们进行排序?

python - Tkinter 和 32 位 Unicode 复制 - 任何修复?

python - 如何在 Tkinter 中将一个框架添加到另一个框架内?

python - Pandas 。检查一列中的任何拆分字符串是否在另一列中

python - 创建一个条形图,其条形是相对于最大值或最小值的填充进度百分比

python - 从列表中选择特定项目

python - OR 逻辑与 Django-filter

Mysql - 在选择查询结果中返回表名