你本能地使用字典是很好的 - 这是一个简单的方法来创建从一个字符到另一个字符的映射。你也可以使用元组列表(例如:((1, 9), (2, 8), ...)
)
你没有提到GUI工具包(或者你是否只是在做一个控制台应用程序),所以我将举一个tkinter例子来说明使用字典为每个密钥设置密钥绑定。使用元组将几乎相同。
import tkinter as tk # for python 2 use 'Tkinter'
class Example(tk.Frame):
keymap = {'1': '9', '2': '8', '3': '7',
'4': '6', '5': '5', '6': '4',
'7': '3', '8': '2', '9': '1'}
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.entry = tk.Entry(self, width=20)
self.entry.pack(fill="x", pady=20, padx=20)
for old_key, replacement in self.keymap.items():
self.entry.bind('<KeyPress-%s>' % old_key,
lambda event, char=replacement: self.insert(char))
def insert(self, char):
self.entry.insert("insert", char)
return "break"
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()
您的意思是,例如,映射'a'和'newdict ['1']''。所以当你运行'a = 1'时,然后把'newdict ['1']'改为'1'? –
您需要大量修改文本框,以便修改任何输入。既然你没有告诉我们你正在使用哪一个GUI工具包,我们无法帮助你。告诉我们您使用的是哪个GUI工具包(和[提供您当前的代码](http://sscce.org/)),以便我们可以帮助您。无论如何,只需简单地捕获键盘按键并将结果输出到不可写入的文本显示中可能更为明智。 – phihag
@凯文:理想情况下,主题将输入1,文本框将显示9(或你有什么)。我不知道如何从键入“旧”号码(即1)并显示“新”号码(即9)的主题实时翻译。那有意义吗? “a = 1”是我的一个不好的例子,因为我根本不想重新映射字母。 – adyo4552