你本能地使用字典是很好的 - 這是一個簡單的方法來創建從一個字符到另一個字符的映射。你也可以使用元組列表(例如:((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