标签: keyboard-events

python tkinter 绑定:如何防止双重事件

我有一个使用 tkinter 和键绑定的 python 程序。该程序调用外部程序,然后询问如何处理它,期望 n 键表示“否”,或 y 键表示“是”。问题:如果我按允许的键两次,第二个键将被存储并稍后处理 - 因此是错误的问题。

import tkinter as tk
import time

class App:
    counter = 0

    def __init__(self, master): # Constructor
        # build GUI
        self.label = tk.Label(text="Press <space>", width=40)
        self.label.grid(row=1, column=1, sticky='w')

        # bind keys to buttons
        master.bind('<Key-space>', self.keyPressed)
        pass # __init__


    def keyPressed(self, event):
        print("Step 1")
        self.counter = self.counter + 1
        self.label.configure(text = str(self.counter))
        self.label.update()
        time.sleep(3)
        print("Step  2")
        pass # Key1Pressed
# End of class App

root = tk.Tk()
root.option_add('*font', ('Arial', 11, 'bold')) …
Run Code Online (Sandbox Code Playgroud)

python tkinter key-bindings keyboard-events

4
推荐指数
1
解决办法
6221
查看次数

Mac 中的 Capslock 不会触发 keyDown 事件

铬 (52):

当打开大写锁定时 - 仅触发 keydown(keyUp 或 keyPress 中没有事件)

当关闭大写锁定时 - 仅触发 keyup(keyDown 或 keyPress 中没有事件)

火狐 (46):

对于大写锁定打开和关闭,仅触发 keyDown 事件(无 keyUp 或 keyPress)

我在这里阅读了有关 keyCodes 和事件的信息http://www.quirksmode.org/js/keys.html以及 MDN 中的内容https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent /keyCode, aaa 和这里http://unixpapa.com/js/key.html

但以上链接都没有讨论这种奇怪的行为。这是预期的吗?如果是这样,有什么更简单的方法可以处理吗?

javascript events keyboard-events capslock dom-events

4
推荐指数
1
解决办法
3245
查看次数

在AS3中不使用KeyboardEvent检查键盘状态

是否可以在不使用KeyboardEvent的情况下检查按下的键?

我有一个名为enterFrameHandler的ENTER_FRAME事件设置,如果按下任何键,我想在函数enterFrameHandler中检查.

使用的KeyboardEvent正常时,我可以检查很容易使用,检查事件的邀请码开关按键,但在一个ENTER_FRAME事件,这是不可能的我.

还有其他方法可以在ENTER_FRAME事件中检查键盘的状态吗?

更新:我发现了这个AS2脚本:

onClipEvent (enterFrame) {
    if (Key.isDown(Key.LEFT)) {
        _x -= power;
    }
    if (Key.isDown(Key.RIGHT)) {
        _x += power;
    }
    if (Key.isDown(Key.UP)) {
        _y -=power;
    }
    if (Key.isDown(Key.DOWN)) {
        _y +=power;
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎正在做我想要的,但它在AS2中,有没有人知道如何将其"翻译"为AS3?

flash actionscript-3 keyboard-events enterframeevent

3
推荐指数
1
解决办法
4906
查看次数

我应该使用KeyPressEvent或QAction来实现按键吗?

在Qt中,要么实现keyPressEvent或创建QAction并为其分配一个组合键,我就可以根据键盘进行操作.

通常首选哪种方法?

keyboard qt keyboard-events

3
推荐指数
1
解决办法
2503
查看次数

Java Swing中删除的KeyStroke

我正在尝试使用InputMap/ActionMap拦截删除键.我让它与Enter一起工作,但它似乎没有回复删除(这是在Mac OSX上,所以我想知道这是否是问题的一部分).

我究竟做错了什么?

private void setupKeyBindings(final JList jlist) {
        String delAction = "deleteItems";
        KeyStroke delKey = KeyStroke.getKeyStroke("DELETE");
        jlist.getInputMap().put(delKey, delAction);
        jlist.getActionMap().put(delAction, new AbstractAction()
        {
            @Override public void actionPerformed(ActionEvent e) {
                System.out.println("delete pressed");
                doDelete(jlist);
            }
        });     

        String enterAction = "useItems";
        KeyStroke enterKey = KeyStroke.getKeyStroke("ENTER");
        jlist.getInputMap().put(enterKey, enterAction);
        jlist.getActionMap().put(enterAction, new AbstractAction()
        {
            @Override public void actionPerformed(ActionEvent e) {
                System.out.println("enter pressed");
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

java macos keyboard-events

3
推荐指数
1
解决办法
7213
查看次数

无法将Control-Backspace映射到KeyStroke

我无法将Control-Backspace键映射到KeyStroke.以下对我没有意义.

import java.awt.event.KeyEvent;
import javax.swing.KeyStroke;
public class TestControlBackspace {
    public static void main(String[] args) {
        KeyStroke ks1 = KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, KeyEvent.VK_CONTROL);
        KeyStroke ks2 = KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, KeyEvent.VK_SHIFT);
        KeyStroke ks3 = KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0);
        System.out.println(ks1);
        System.out.println(ks2);
        System.out.println(ks3);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

按下BACK_SPACE

按下BACK_SPACE

按下BACK_SPACE

我在这里错过了什么吗?

java swing key-bindings keyboard-events backspace

3
推荐指数
1
解决办法
1371
查看次数

如何使用箭头键javascript移动图像

我最近开始开发一个小的JavaScript游戏,只是为了好玩.我的想法是你在屏幕上的一个方框内用箭头键(或者awsd或者我不关心什么)控制了一个小点.然后,小矩形会随机产生在盒子的所有边缘上并在其上方前进.你必须避免与他们接触.事实证明这个项目比我预期的要困难,我无法让这项运动正常运转.如果你可以帮助我那将是伟大的.此外,随意采取这个概念,到目前为止我做了什么,并做任何你想做的事情.我很想看到你的结果.下面是我用于没有任何移动脚本的产生的代码.我正在使用此代码的基本思想来进行运动:

var x = 5; //Starting Location - left
var y = 5; //Starting Location - top
var dest_x = 300;  //Ending Location - left
var dest_y = 300;  //Ending Location - top
var interval = 2; //Move 2px every initialization

function moveImage() {
    //Keep on moving the image till the target is achieved
    if(x<dest_x) x = x + interval; 
    if(y<dest_y) y = y + interval;

    //Move the image to the new location
    document.getElementById("ufo").style.top  = y+'px';
    document.getElementById("ufo").style.left = x+'px';

    if …
Run Code Online (Sandbox Code Playgroud)

javascript move dynamic keyboard-events

3
推荐指数
1
解决办法
1万
查看次数

为什么UIElement.MoveFocus()不将焦点移动到ListBox中的下一个兄弟元素?

我有以下可视树:

<DockPanel>
    <TextBox Name="ElementWithFocus" DockPanel.Dock="Left" />
    <ListBox DockPanel.Dock="Left" Width="200" KeyUp="handleListBoxKeyUp">
        <ListBoxItem>1</ListBoxItem>
        <ListBoxItem>4</ListBoxItem>
        <ListBoxItem>3</ListBoxItem>
        <ListBoxItem>2</ListBoxItem>
    </ListBox>
    <TextBox DockPanel.Dock="Left" />
</DockPanel>
Run Code Online (Sandbox Code Playgroud)

handleListBoxKeyUp 如下:

private void handleListBoxKeyUp(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        ((UIElement)sender).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
    }
}
Run Code Online (Sandbox Code Playgroud)

ListBox有键盘焦点(实际上是ListBoxItem我猜)时,按下Enter将焦点移动到第一个ListBox而不是下面的项目TextBox.为什么会发生这种情况,我怎样才能获得EnterTab这里一样的关键?

.net wpf keyboard-events

3
推荐指数
1
解决办法
4494
查看次数

SDL 2.0密钥重复和延迟

我在乒乓球游戏中遇到SDL 2.0键盘输入问题.当我按左箭头命令向左移动时,它由SDL_PollEvents()处理,如果按下键一次,则响应正确.但是,如果我按下按键,我会在连续移动之前得到短暂的延迟(只要Windows键重复延迟).

这是函数处理事件:

void Event::PlayerEvent (Player &player)
{
    while (SDL_PollEvent (&mainEvent))
    {
        switch (mainEvent.type)
        {
            case SDL_KEYDOWN :
                switch (mainEvent.key.keysym.sym)
                {
                    case SDLK_ESCAPE :
                        gameRunning = false;
                        break;
                    case SDLK_LEFT :
                        player.moving = player.left;
                        break;
                    case SDLK_RIGHT :
                        player.moving = player.right;
                }
                break;
            case SDL_QUIT :
                gameRunning = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:毕竟,我设法通过在程序开始时调用SystemParametersInfo(SPI_SETKEYBOARDDELAY,0,0,0)和最后调用SystemParametersInfo(SPI_SETKEYBOARDDELAY,1,0,0)来修复此问题,以返回到标准键重复延迟.

c++ keyboard-events sdl-2

3
推荐指数
1
解决办法
4529
查看次数

Godot键盘事件

我正在研究Godot Engine和GDScript,并且我在互联网上搜索了有关键盘事件的信息,但我听不懂。Godot中是否有类似的东西on_key_down("keycode")

keyboard-events gdscript godot

3
推荐指数
3
解决办法
5317
查看次数