python - 在 tkinter 中创建事件之间的关系
问题描述
我有一个带有事件函数的列表框和一个组合框(使用 python 的 tkinter),但找不到在这两个事件之间建立任何关系的方法。
我用 sqlite3 建立了一个存储费用的数据库(相关列是 'category' ,'cost')。
在我的 GUI 中,我有一个包含所有数据库行的列表框。我添加了一个组合框,使我能够选择特定类别,然后单击其中一个类别后,我只能在列表框中看到具有此特定类别的条目(简单绑定和事件功能)。
除此之外,我还有一个条目小部件。单击列表框中的特定行时,该行的成本列将插入到条目小部件中。
当我第一次触发 Combobox 事件然后尝试单击 Listbox 中的特定行以触发 Listbox 事件时,就会出现问题。条目小部件中没有插入任何内容。
我的这些事件函数的代码:
global selected_cat
"""event triggered by clicking on a row in Combobox.
lb is Listbox widget.
selected_cat will store the selected category.
db is the Database
"""
def get_selected_category(event):
selected_cat=cat.get()
lb.delete(0,END)
for i in db.search_by_category(selected_cat):
lb.insert(END,i)
"""event triggered by clicking on a row in Listbox.
lb is Listbox widget.
selected_tuple is a tuple which contains (id,category,cost)
"""
def get_selected_row(event):
global selected_tuple
print(lb.curselection())
index=lb.curselection()[0]
if index != ():
selected_tuple=lb.get(index)
print(selected_tuple)
e1.delete(0,END)
e1.insert(END,str(selected_tuple[2])+" ILS")
这些是绑定:
lb.bind('<<ListboxSelect>>',get_selected_row)
cat.bind('<<ComboboxSelected>>', get_selected_category)
解决方案
我设法追溯了这个问题。问题是由我的数据库类引起的,它有一个视图函数,它返回一个元组内的 4 个元素,但我只返回了 3 个其他视图函数。所以“selected_tuple[2]”的索引是一个空字符串,这就是为什么我不能'在条目中看不到该值的任何表示。
感谢您的帮助和指导!
推荐阅读
- python - 我不断收到 ValueError: Shapes (10, 1) and (10, 3) are incompatible 训练我的模型
- r - 在循环中结合使用 sink() 和 rmarkdown::render() 来检测计划的 .Rmd 报告的错误
- image - 您如何以编程方式创建图像,以便在 Unity 中与 2D 精灵一起使用?
- .net-core - OAuth 2.0、Swagger 和 DotNet 核心
- ios - WKWebView 内容不在 iOS 中居中
- vba - 当前 RecordSet 不支持更新
- amazon-web-services - 如何在 AWS Cloud Formation 模板中使用参数而不是静态实例 ID?
- python - BigQuery 中的输入 - Python
- python - 根据值将日期分组到列表中
- json - JsonSlurper 的格式化问题