Python:Tkinter:使用树项插入条目字段时出现延迟 属性
Python: Tkinter: Delay When Inserting Into Entry Field Using Tree Item Property
我有一些代码可以根据在树视图中选择的项目来更改输入字段中显示的文本。我已将事件绑定到鼠标左键和上下箭头键,并且可以正常工作。问题是当前选择的树中的项目不是输入字段中显示的值。如果有三个(5、7、4)值,并且选择了值为 4 的项目,则输入字段将显示其中值为 7 的项目。它总是一次性的。我不想问这个问题,因为我觉得答案很简单,但我真的很茫然。这是我的代码。
# create GUI items to populate frames
self.create_menu()
self.create_edit_display()
self.albumDisplay = Label(self.editFrame)
self.create_import_display()
self.tree.bind("<BackSpace>", self.delete_insert)
self.tree.bind("<Button-1>", self.update_editFrame)
self.tree.bind("<Up>", self.update_editFrame)
self.tree.bind("<Down>", self.update_editFrame)
# selected track can be removed
def delete_insert(self, event):
self.tree.delete(self.tree.focus())
def update_editFrame(self, event):
trackInfo = self.tree.item(self.tree.focus())
print(trackInfo)
if self.tree.focus():
trackInfo = self.tree.item(self.tree.focus())
self.trackNumberEntry.delete(0, END)
#self.trackNumberEntry.insert(0, random.choice([1,2,3,4,5,6,7]))
self.trackNumberEntry.insert(0, trackInfo['values'][0])
else:
self.tree.focus_get()
通过我的调试,我注意到每次我第一次点击树视图时,我都会得到类似的东西。
{'tags': '', 'text': '', 'values': '', 'image': '', 'open': 0}
{'tags': '', 'text': 'IMPORT# 2', 'values': [6, 'Supersymmetry', '', 'Arcade Fire', 'Arcade Fire', 'Reflektor', '', '', 2013, '00:11:16', '', '', 'arcade_fire_reflektor_06_supersymmetry_.mp3', 'arcade_fire_reflektor.jpg', ''], 'image': '', 'open': 0}
是最初的电话打乱了订单。我不确定为什么在进入 'value' 的值之前要这样做。
简单的解决方案是绑定到 <<TreeviewSelect>>
而不是绑定到当前项可以更改的所有方式。
您的绑定似乎总是落后一个的原因是它们确实如此。小部件上的自定义绑定在 之前 触发内置绑定,并且是内置绑定更改了所选项目。因此,在您的回调中,您会看到所选项目更改之前树的状态。
有关详细说明,请参阅
我有一些代码可以根据在树视图中选择的项目来更改输入字段中显示的文本。我已将事件绑定到鼠标左键和上下箭头键,并且可以正常工作。问题是当前选择的树中的项目不是输入字段中显示的值。如果有三个(5、7、4)值,并且选择了值为 4 的项目,则输入字段将显示其中值为 7 的项目。它总是一次性的。我不想问这个问题,因为我觉得答案很简单,但我真的很茫然。这是我的代码。
# create GUI items to populate frames
self.create_menu()
self.create_edit_display()
self.albumDisplay = Label(self.editFrame)
self.create_import_display()
self.tree.bind("<BackSpace>", self.delete_insert)
self.tree.bind("<Button-1>", self.update_editFrame)
self.tree.bind("<Up>", self.update_editFrame)
self.tree.bind("<Down>", self.update_editFrame)
# selected track can be removed
def delete_insert(self, event):
self.tree.delete(self.tree.focus())
def update_editFrame(self, event):
trackInfo = self.tree.item(self.tree.focus())
print(trackInfo)
if self.tree.focus():
trackInfo = self.tree.item(self.tree.focus())
self.trackNumberEntry.delete(0, END)
#self.trackNumberEntry.insert(0, random.choice([1,2,3,4,5,6,7]))
self.trackNumberEntry.insert(0, trackInfo['values'][0])
else:
self.tree.focus_get()
通过我的调试,我注意到每次我第一次点击树视图时,我都会得到类似的东西。
{'tags': '', 'text': '', 'values': '', 'image': '', 'open': 0}
{'tags': '', 'text': 'IMPORT# 2', 'values': [6, 'Supersymmetry', '', 'Arcade Fire', 'Arcade Fire', 'Reflektor', '', '', 2013, '00:11:16', '', '', 'arcade_fire_reflektor_06_supersymmetry_.mp3', 'arcade_fire_reflektor.jpg', ''], 'image': '', 'open': 0}
是最初的电话打乱了订单。我不确定为什么在进入 'value' 的值之前要这样做。
简单的解决方案是绑定到 <<TreeviewSelect>>
而不是绑定到当前项可以更改的所有方式。
您的绑定似乎总是落后一个的原因是它们确实如此。小部件上的自定义绑定在 之前 触发内置绑定,并且是内置绑定更改了所选项目。因此,在您的回调中,您会看到所选项目更改之前树的状态。
有关详细说明,请参阅