首页 > 解决方案 > 我如何编码我的鼠标点击?我设法通过使用用户输入来做 e.get() 但现在,我想做一个鼠标版本

问题描述

我正在做一个 GUI Tkinter 项目。目前。我可以通过 treeview 功能在我的 GUI 上显示 excel 文件。我想以一种鼠标单击的方式进行编码,例如,当单击第 1 行时,它将读取第 1 行第 2 列框并根据第 1 行 x 第 2 列框中的单词在文档中查找文件并绘制一些图表哪个已完成/不重要,或者当左键单击第 x 行时,锁定第 x 行第 2 列以查找名称并在我的文档文件中搜索它。我想编写 e.get() 但鼠标单击版本。

df = pd.read_csv("C:/Users/njj95/Documents/"+e1.get()+".csv")

到目前为止,我尝试的是左键单击和右键单击。

def leftClick(event):
    print("left")    
def rightClick(event):
    print("right")
my_tree.bind("<Button-1>",leftClick)
my_tree.bind("<Button-3>",rightClick)

我之前所做的是让用户用户输入名称并从那里继续。现在我想通过单击用户名列表而不是用户输入用户名来升级我的 GUI。以前,我的代码是

df = pd.read_csv("C:/Users/njj95/Documents/"+e1.get()+".csv")

e1.get() 由用户输入。

这是版本 GUI 中的用户类型

这是从 excel 文件中精确复制和粘贴的内容

标签: pythonuser-interfacetkinter

解决方案


您可以使用event.y查找在函数内部单击了哪一行leftClick(),然后使用.item()从返回值中获取资产 ID 值:

def leftClick(event):
    # find which row is clicked
    row = event.widget.identify_row(event.y)
    if row:
        # get the asset ID (first value in "values")
        asset_id = event.widget.item(row)["values"][0]
        print(asset_id)
    else:
        print("No record clicked")

my_tree.bind("<Button-1>", leftClick)

推荐阅读