我正在用 tkinter 互動式視窗撰寫一個 python 劊子手代碼,其中包括一個鍵盤。我已經創建了鍵盤,但是我無法弄清楚如何找出用戶按下了哪個鍵盤鍵以及如何將其作為字母存盤在變數中。我將非常感謝任何幫助!
klavesnice = Tk()
klavesnice.geometry("800x700 120 100")
buttons = []
buttons = [
'q','w','e','r','t','y','u','i','o','p',
'a','s','d','f','g','h','j','k','l',
'z','x','c','v','b','n','m'
]
radek=3 #row
sloupec=0 #collumn
for button in buttons:
command=lambda x=button: select(x)
if button!='Space':
Button(klavesnice,text=button,width=5,font=("arial",14,"bold"),bg='powder blue',command=command,padx=3.5,pady=3.5,bd=5).grid(row=radek,column=sloupec)
if button=='Space':
Button(klavesnice,text=button,command=command).grid(row=5,column=sloupec)
sloupec =1
#ur?ení rozlo?ení klávesnice
if sloupec>9 and radek==3:
sloupec=0
radek =1
if sloupec>8 and radek==4:
sloupec=0
radek =1
上面的代碼是顯示鍵盤的代碼,下面的代碼是我唯一能想到的,它不會將點擊的鍵保存到變數中。
zadane=""
entry=Text(zadane_rm,width=43,height=3)
entry.grid(row=1,columnspan=40)
def select(value):
if value=='Space':
entry.insert(END,'')
else:
entry.insert(END, value)
我想將點擊的字母存盤在一個名為zadane.
uj5u.com熱心網友回復:
要執行您想要的操作,只需修改select()函式,以便將當前value引數附加到全域zadane字串變數。請注意,我已重新格式化您的代碼以更緊密地遵循PEP 8 - Python 代碼樣式指南指南,以使其更具可讀性。
import tkinter as tk # Avoid `import *`
klavesnice = tk.Tk()
klavesnice.geometry("800x700 120 100")
buttons = [
'q','w','e','r','t','y','u','i','o','p',
'a','s','d','f','g','h','j','k','l',
'z','x','c','v','b','n','m'
]
zadane = ''
entry = tk.Text(klavesnice, width=43, height=3)
entry.grid(row=1, columnspan=40)
def select(value):
global zadane
if value=='Space':
entry.insert('end', '')
else:
entry.insert('end', value)
zadane = zadane value
print(f'{zadane=!r}')
radek = 3 #row
sloupec = 0 #collumn
for button in buttons:
command = lambda x=button: select(x)
if button != 'Space':
tk.Button(klavesnice, text=button, width=5, font=("arial", 14, "bold"),
bg='powder blue', command=command, padx=3.5, pady=3.5, bd=5
).grid(row=radek, column=sloupec)
if button == 'Space':
tk.Button(klavesnice, text=button, command=command).grid(row=5, column=sloupec)
sloupec = 1
# Specify the keyboard layout
if sloupec > 9 and radek == 3:
sloupec = 0
radek = 1
if sloupec > 8 and radek == 4:
sloupec = 0
radek = 1
klavesnice.mainloop()
uj5u.com熱心網友回復:
這可能很愚蠢,但為什么不只是將按下的字母添加到陣列中呢?每次按下一個字母時,它都會檢查它是否在陣列中?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/483734.html
