[Tkinter-discuss] Making a keyboard

Michael Lange klappnase at web.de
Thu Jan 18 10:38:54 CET 2007


On Wed, 17 Jan 2007 16:48:02 -0700
Bob Greschke <bob at passcal.nmt.edu> wrote:

> I'm making a popup keyboard for some touchscreen input.
> I have, for example, got:
> 
>      Button(KBFrm, text = "1", command = Command(kbhit, "1")...
> 
> 
>      def kbhit(K, e = None):
>          Root.event_generate("<"+K+">")
>          return
> 
> 
> The letter keys work OK, but in the number keys 1 through 5 don't  
> seem to do anything, but 6-9 and 0 work.  Looking at e.keysym and  
> e.keysym_num in a whole other routine says that the 1 key on a  
> keyboard generates 1, and 49, so I don't get what is going on.  Are  
> <1> through <5> some kind of shortcuts for mouse button stuff?
> 

In fact, <1> is a synonym for <ButtonPress-1>, so you better be explicit
and use <KeyPress-...> events.

> Also, is there something like a dictionary in the system where I can  
> get the keysym for the punctuation keys like
> 
>      KeySyms["$"] = "dollar"
> 
> or do I have to make one myself?
> 

Maybe you can use a test script to find them out:

>>> from Tkinter import *
>>> c=Canvas()
>>> c.pack()
>>> def test(ev):          
...     print ev.keysym
... 
>>> c.config(takefocus=1)
>>> c.bind('<1>', lambda eveent:c.focus_set())
'3084582540L<lambda>'
>>> c.bind('<Any-Key>', test)
'3084591988Ltest'
# some keystrokes:
Shift_L
dollar
Shift_L
percent
Shift_L
parenleft
ISO_Level3_Shift
??

I am not sure if the keys that use modifiers are relieable when used on different systems.

I hope this helps

Michael




More information about the Tkinter-discuss mailing list