- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不太确定这个问题以前是否有人问过,因为它似乎太微不足道了,不太新鲜,但是我已经环顾四周一个小时了,还没有发现任何东西
我正在使用 ttk Treeview 来显示和分析表格。对于给定的函数,我希望能够识别双击的确切单元格(行和列)。虽然很容易找到行,但我找不到列,因为鼠标位置始终相对于屏幕显示,而不是相对于 winfo_pointerx() 的 Treeview。我也无法让 event.x 工作...
from Tkinter import *
import ttk
import utils
class AudiDataList():
def __init__(self, i_root, i_header, i_data, i_types):
self.root = i_root
f1 = ttk.Frame(root)
f1.pack()
t1 = ttk.Treeview(f1, columns=i_header, show="headings")
t1.pack()
for col in i_header:
t1.heading(col, text=col.title())
for item in i_data:
t1.insert('', 'end', values=item, tags = ('item',))
t1.tag_bind('item', "<Double-Button-1>", callback=lambda c=col: self.filter(t1, c, 0, i_types, i_header))
def filter(self, tree, col, descending, i_types, i_header):
print "Row: ", tree.focus()
print "X-position", tree.winfo_pointerx()
print "Column: ??? ",tree.identify_column(tree.winfo_pointerx())
header = ['col1', 'col2', 'col3']
datentypen = ['text', 'money', 'int']
data = [
('a', '1,00', 1) ,
('a', '2,00', 2) ,
('b', '12,10', 3) ,
('c', '2,10', 4) ,
('b', '3,00', 5)]
root = Tk()
Auditable = AudiDataList(root, header, data, datentypen)
root.mainloop()
非常感谢您的帮助。
最佳答案
您需要结合一些技巧来解决您的问题。
首先,您需要使用 winfo_pointerxy()
。这将返回一个元组 (x , y)
包含鼠标指针相对于 tree
的坐标的根窗口。
然后您需要使用该元组的第一个元素 winfo_pointerxy()[0]
,调用 identify_column()
从中减去 winfo_rootx()
的方法(解决窗口移动问题)。
但是你需要小心,因为 winfo_pointerxy()
返回的元组类型为<type 'unicode'>
。例如,您需要 import re
为了使用 re.sub()
这样您就可以替换 #1
形式的数据为整数1
。
这意味着您的filter()
方法现在看起来像这样:
def filter(self, tree, col, descending, i_types, i_header):
print 'Row: {} & Column: {} '.format(re.sub('I00','',str(tree.identify_row(tree.winfo_pointerxy()[1]-tree.winfo_rooty()))),re.sub(r'#','',str(tree.identify_column(tree.winfo_pointerxy()[0]-tree.winfo_rootx()))))
这是完整的程序:
'''
Created on Apr 24, 2016
@author: billal begueradj
'''
from Tkinter import *
import ttk
import re
class AudiDataList():
def __init__(self, i_root, i_header, i_data, i_types):
self.root = i_root
f1 = ttk.Frame(root)
f1.pack()
t1 = ttk.Treeview(f1, columns=i_header, show="headings")
t1.pack()
for col in i_header:
t1.heading(col, text=col.title())
for item in i_data:
t1.insert('', 'end', values=item, tags = ('item',))
t1.tag_bind('item', "<Double-Button-1>", callback=lambda c=col: self.filter(t1, c, 0, i_types, i_header))
def filter(self, tree, col, descending, i_types, i_header):
print 'Row: {} & Column: {} '.format(re.sub('I00','',str(tree.identify_row(tree.winfo_pointerxy()[1]-tree.winfo_rooty()))),re.sub(r'#','',str(tree.identify_column(tree.winfo_pointerxy()[0]-tree.winfo_rootx()))))
header = ['col1', 'col2', 'col3']
datentypen = ['text', 'money', 'int']
data = [
('a', '1,00', 1) ,
('a', '2,00', 2) ,
('b', '12,10', 3) ,
('c', '2,10', 4) ,
('b', '3,00', 5)]
root = Tk()
Auditable = AudiDataList(root, header, data, datentypen)
root.mainloop()
这是运行程序的屏幕截图:
关于python - 树形 View 鼠标位置python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36816625/
是否有办法获取所选 TreeView 节点的索引,或者他们是否有一个? 最佳答案 由于您要求“索引”只是为了能够查找与此项目关联的数据,因此您应该知道树控件可以保存您的数据。每个项目(TVITEM 结
我不太确定这个问题以前是否有人问过,因为它似乎太微不足道了,不太新鲜,但是我已经环顾四周一个小时了,还没有发现任何东西 我正在使用 ttk Treeview 来显示和分析表格。对于给定的函数,我希望能
我不太确定这个问题以前是否有人问过,因为它似乎太微不足道了,不太新鲜,但是我已经环顾四周一个小时了,还没有发现任何东西 我正在使用 ttk Treeview 来显示和分析表格。对于给定的函数,我希望能
我有一个复杂的 json 字符串,如下所示: { "id":"2016666", "dt":"2012", "object_extends":[ {
我用了JQuery TreeView在大模式下,我想折叠除 root 之外的所有项目,如何更改 jquery.treeview.js 来执行此操作? 最佳答案 嗯..也许不是最干净的解决方案,但似乎有
这听起来可能很奇怪,因为我无法找到我想做的确切术语。 我正在开发一个应用程序,它具有一组规则(易于转换为函数)和输入/输出对(不那么容易转换为代码),将允许构造规则树以应用于给定的输入达到给定的输出。
我是网络开发的菜鸟。我正在尝试创建一个树状的分层公司组织结构图。我尝试了两个谷歌的 visualization chart和 Mike Bostock 的 D3 Reingold tree . 我想要
我是一名优秀的程序员,十分优秀!