gpt4 book ai didi

python - Tkinter 中的 if 语句被 else 语句删除

转载 作者:行者123 更新时间:2023-12-01 04:46:16 27 4
gpt4 key购买 nike

我正在 tkinter 中为自己创建字典,当我添加 else 语句(对于不在字典中的任何查询)时,它首先删除了 if 语句(索引)。

我不知 Prop 体原因。条目(exe)与 else 一起工作没有任何问题,并且索引与 else 删除一起工作。

def search_button(self, event=None):
if self.entry.get() == 'index':
self.search_result.set("alea jacta est")

if self.entry.get() == 'exe':
self.search_result.set("lorem ipsum")

else:
self.search_result.set("Entry not in database.")

最佳答案

你的第二个if应该是elif:

def search_button(self, event=None):
if self.entry.get() == 'index':
self.search_result.set("alea jacta est")
elif self.entry.get() == 'exe':
self.search_result.set("lorem ipsum")
else:
self.search_result.set("Entry not in database.")

您的代码的问题是,如果 Entry 文本为“index”,则 search_result 按预期设置为“alea jacta est”,但随后您的代码会继续测试 Entry 是否text 是“exe”,但它不是,因此 search_result 设置为“条目不在数据库中。”。您可以通过在self.search_result.set("alea jacta est")之后放置一个return语句来阻止第二次测试,但最好使用 elif 技术。

如果您有很多可能的条目文本需要测试,那么使用字典会更有效,其中条目文本作为键,结果文本作为值。这是一种方法:

texts = {
"index": "alea jacta est",
"exe": "lorem ipsum"
}

def search_button(self, event=None):
result_text = texts.get(self.entry.get(), "Entry not in database.")
self.search_result.set(result_text)

字典技术更加高效,因为字典查找速度很快,并且相对独立于字典中的项目数量。

相比之下,if...elif...elif...技术正在对所有可能的字符串进行线性搜索,直到找到匹配项,并且如果需要检查的项目很多,不过如果只有少量的项目也没关系。 OTOH,我发现基于 dict 的方法更紧凑,更易于阅读和修改。

关于python - Tkinter 中的 if 语句被 else 语句删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29315885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com