tkinter <KeyRelease>在Windows和Linux上的不同行为

锻造

在我的CS课上,我的学生们刚刚完成了他们的第一次“克隆经典”竞赛。PONG团队又迅速通过“嘿我的桨被冻结”的问题上一个键盘版的两名球员。5年前,我遇到了这个问题,并发现Python绑定-允许同时按下多个键,这些使我感到高兴(注意!本文使用python2.7)。但是我当时没有意识到该脚本仅适用于Windows计算机。

在linux系统上,该<KeyRelease-a>事件触发了回调,但event.char随后指向的是“”,而不是人们期望的“ a”。我尝试使用Google搜索该问题,但即使这样stackoverflow我也找不到任何感兴趣的内容。

有什么提示吗?接下来找到可重现的代码示例:

import os
from tkinter import *

os.system("xset r off")

def keyup(e):
    #print(f"up {e.char}")
    print(f"up {e.keysym}")

def keydown(e):
    #print(f"down {e.char}")
    print(f"down {e.keysym}")

root = Tk()
frame = Frame(root, width=100, height=100)
frame.bind("<KeyPress>", keydown)
frame.bind("<KeyRelease>", keyup)
frame.pack()
frame.focus_set()
root.mainloop()

os.system("xset r on")

如Bryan所要求的那样具有可重复性,我感谢他对我的问题的关注。

锻造

只是为了结束本主题,Atlas435完成了所有工作:如果您想用Tkinter编写Pong,用两个拨片独立侦听击键,请遵循此Python绑定指南-允许同时按下多个键,然后更改e.chare.keysym在回调中获取触发事件已按下或释放的键。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Tkinter:为什么我的“<KeyRelease-Return>”事件不起作用?

来自分类Dev

在Windows和Linux上获得正则表达式结果之间的不同行为

来自分类Dev

`rails new`:Linux和Windows中的不同行为

来自分类Dev

Windows和Linux下与XML相关的不同行为

来自分类Dev

Python 并行处理 - Linux 和 Windows 之间的不同行为

来自分类Dev

ComboBox,Windows 7和8.1上的不同行为

来自分类Dev

TKinter中的不同Windows

来自分类Dev

tkinter和Tkinter之间的区别

来自分类Dev

Jython Shutil(Windows,Linux,J / Python之间的不同行为)!

来自分类Dev

Haskell中Applicative在元组和列表上的不同行为

来自分类Dev

for循环上->(右箭头)和<-(左箭头)的不同行为

来自分类Dev

Iphone和Ipad上CorePlot库的不同行为

来自分类Dev

Path.equals在Windows和Linux上的行为不同

来自分类Dev

Linux上的tkinter菜单样式

来自分类Dev

Tkinter .withdraw()奇怪的行为

来自分类Dev

Tkinter`after`奇怪的行为

来自分类Dev

tkinter的checkbutton不同的图像

来自分类Dev

Python和Tkinter

来自分类Dev

Tkinter,变量和函数

来自分类Dev

Tkinter进入和网格

来自分类Dev

Tkinter和Python列表

来自分类Dev

Tkinter和线程

来自分类Dev

Python tkinter 和网格

来自分类Dev

tkinter 和线程参数

来自分类Dev

<pre> <code>上的不同行为

来自分类Dev

UITableView控件上的不同行为

来自分类Dev

Tkinter .icursor(* arg)奇怪的行为

来自分类Dev

Tidyr :: Nest在不同系统和程序包/ R版本上的不同行为

来自分类Dev

数组和指针功能的不同行为