簡體   English   中英

Python 中的移位和大寫鎖定狀態

[英]Status of shift and caps lock in Python

我正在使用 Python 2.5 編寫 TkInter 應用程序,我需要找出大寫鎖定和 shift 鍵的狀態(真或假)。 我已經搜索了整個網絡,但找不到解決方案。

Tkinter 中的鍵盤事件可能很棘手。

我建議您按順序查看以下內容:

這是一個顯示鍵碼值和 state 事件參數的程序。 你可以用它來做實驗。 點擊 window,然后敲擊鍵盤。

from Tkinter import *
root = Tk()

def key(event):
    print "Keycode:", event.keycode, "State:", event.state

def callback(event):
    frame.focus_set()
    print "clicked at", event.x, event.y

frame = Frame(root, width=100, height=100)
frame.bind("<Key>", key)
frame.bind("<Button-1>", callback)
frame.pack()

root.mainloop()

利用:

from Tkinter import *
root = Tk()
caps_lock_on = False
def CAPSLOCK_STATE():
    import ctypes
    hllDll = ctypes.WinDLL ("User32.dll")
    VK_CAPITAL = 0x14
    return hllDll.GetKeyState(VK_CAPITAL)

CAPSLOCK = CAPSLOCK_STATE()
if ((CAPSLOCK) & 0xffff) != 0:
    print "\nCaps lock is on\n"
    caps_key_on = True
else:
    caps_key_on = False
    print 'Caps lock is off'

def caps_lock_pressed(event=''):
    global caps_lock_on
    if caps_lock_on == False:
        caps_lock_on = True
        print 'Caps lock is on'
    else:
        caps_lock_on = False
        print 'Caps lock is off'

#Changes if shift key is on and off 
def shift_key_pressed(event=''):
    global shift_key_on
    shift_key_on = True
    print 'Shift is being holded' 

def shift_key_released(event=''):
    global shift_key_on
    shift_key_on = False
    print 'Shift has been released'
        
root.bind('<Caps_Lock>',caps_lock_pressed)
root.bind('<Shift_L>',shift_key_pressed)
root.bind('<Shift_R>',shift_key_pressed)
root.bind('<KeyRelease-Shift_R>',shift_key_released)
root.bind('<KeyRelease-Shift_L>',shift_key_released)
root.mainloop()

這將檢查它的大寫鎖定,然后它將綁定大寫鎖定並轉換以更改 state。 大寫鎖定檢測系統是借用的。

我用谷歌搜索了一個..我不確定它是否適用於所有鍵...

http://www.java2s.com/Code/Python/Event/KeyactionFunctionKeyALtControlShift.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM