使用Tkinter与StringVar实现字典键输出到终端的功能求助
问题排查与实现方案
你现有代码存在以下可优化/修复点:
- 重复导入tkinter库,同时用了
from tkinter import *和import tkinter as tk两种导入方式,存在冗余 - 定义了两次没用的
info()函数,还额外加了一个多余的输入框组件,和你的需求无关 - 你现在的按钮触发逻辑只会打印输入的英文内容,没有做字典反向查找的逻辑:你的字典是俄文为键、英文为值,不能直接用
dict[key]的方式取值,需要做反向匹配 - 给组件赋值时直接链式调用
pack()是不规范写法,pack()返回None,后续如果要操作组件会拿不到实例,建议分开写
修复后的完整代码
import tkinter as tk window = tk.Tk() window.title('俄英水果名反向查询') window.geometry('300x200+50+75') window.resizable(True, True) # 俄文到英文的水果映射字典 fruit = {'яблоко':'apple', "ананас":'pineapple'} # 提前生成英文到俄文的反向映射,避免每次查询都遍历字典,效率更高 en_to_ru = {v: k for k, v in fruit.items()} input_str = tk.StringVar(window) def get_ru_key(): # 拿到输入的英文,去掉首尾空格 en_name = input_str.get().strip() # 查反向映射字典,找不到就输出提示 ru_name = en_to_ru.get(en_name, "未匹配到对应的俄文水果名") print(ru_name) # 输入框 entry = tk.Entry(window, textvariable=input_str, bg='white', fg='black', width=30) entry.pack(pady=20) # 查询按钮 button = tk.Button(window, text='查询对应俄文键', bg='blue', fg='white', width=15, height=2, command=get_ru_key) button.pack() window.mainloop()
实现效果
输入pineapple点击按钮,终端会直接打印ананас,输入不存在的水果名会打印提示文本。
内容的提问来源于stack exchange,提问作者Sap2ch
相关产品推荐
相关产品推荐

