Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 捕获数据的简单用户界面_Python_R_Vba_User Interface - Fatal编程技术网

Python 捕获数据的简单用户界面

Python 捕获数据的简单用户界面,python,r,vba,user-interface,Python,R,Vba,User Interface,我知道这是一个模糊的问题,但我希望得到一些帮助。我非常熟悉VBA,能够用python和R语言完成一些简单的任务 我想做的是创建一个简单的应用程序,让我捕获数据,其中一些数据是从键盘捕获的。每次击键时,我都想在数据集中创建一条新记录 在某些情况下,考虑创建一个简单的界面,让我跟踪NHL曲棍球比赛中冰球的位置(和持续时间) 我不是一个真正的程序员,但我知道的只是足够陷入困境,不确定从哪里开始。我只是想了解一些关于非常基本(非商业)解决方案的想法 非常感谢 编辑:我想捕捉冰球在每个区域的长度。我计划使

我知道这是一个模糊的问题,但我希望得到一些帮助。我非常熟悉VBA,能够用python和R语言完成一些简单的任务

我想做的是创建一个简单的应用程序,让我捕获数据,其中一些数据是从键盘捕获的。每次击键时,我都想在数据集中创建一条新记录

在某些情况下,考虑创建一个简单的界面,让我跟踪NHL曲棍球比赛中冰球的位置(和持续时间)

我不是一个真正的程序员,但我知道的只是足够陷入困境,不确定从哪里开始。我只是想了解一些关于非常基本(非商业)解决方案的想法

非常感谢

编辑:我想捕捉冰球在每个区域的长度。我计划使用左/右方向键“跟随”冰球从一个区域到另一个区域。每次冰球变为区域时,我都想“关闭”活动记录并开始新记录。开始和结束时间可以让我计算冰球在禁区内的时间。我还需要一种方法来停止为诸如对峙、电视暂停和期末等事件创建新记录。我打算用空格键。我的想法是,如果我做得正确,当我跟随时,记录的时间应该与电视上的游戏时钟上发布的时间相匹配。是的,这是一个疯狂的想法。< /P> < p>查看R.中的键盘输入(SCAN),并且没有询问鼠标输入,但是考虑LoopAcor()。
如果要立即输出,请将其设置为循环。

是否需要自己编程?有一个名为“为动物行为学研究中的动物行为评分而设计”的免费项目。这似乎很适合你的任务

如果选择使用Python编程:

您可以使用该软件包轻松捕获键盘事件。该库是为编写游戏而构建的,但可能会为您提供keydown/keydup事件所需的功能。它还可以处理鼠标事件,并且(因为它是为游戏设计的)能够处理图形/文本。文档非常好,而且是跨平台的。一个可能的缺点是,你必须有一个“屏幕”,它必须有焦点。下面是一个小例子:

import pygame

def main():
    """
    Pygame Example
    """
    pygame.init()
    screen = pygame.display.set_mode((200, 200)) 
    app_running = True
    while app_running:
        # Get all key/mouse events from system.
        events = pygame.event.get()
        # Loop thru each event...
        for e in events:
            # Handle when the program is killed.
            if e.type == pygame.QUIT:
                app_running = False
                break
            # Handle key events.
            elif e.type == pygame.KEYDOWN:
                # Exit if escape is pressed.
                if e.key == pygame.K_ESCAPE:
                    app_running = False
                # Do something when the right arrow
                # is pressed.
                elif e.key == pygame.K_RIGHT:
                    print "right arrow pressed"
                # Do something when the left arrow
                # is pressed.
                elif e.key == pygame.K_LEFT:
                    print "left arrow pressed"
                # and so on ...
        # Fill the screen to blank it.
        #screen.fill(mycolor)
        # Write someting to the screen to display.
        #screen.blit(some_image, some_position)
        # Flip to display.
        #screen.flip()
    pygame.quit()

if __name__ == '__main__': 
    main() 
如果您使用的是Windows版本,您可以使用
msvcrt
库,但事件处理不如
pygame
好:您必须处理原始键盘输出,而不是事件,而且它不太直观。以下是来自以下网站的小代码片段:


您能否提供更多有关要捕获的数据类型以及希望发生什么的详细信息?你想捕获任何类型的键盘输入,或特定的字母?是的,理想情况下我可以使用箭头键,但如果需要,我可能会调整它。没有想到扫描。你能给我一个如何用扫描捕捉左箭头或右箭头的例子吗?这正是我要找的!谢谢
import msvcrt

def funkeypress():
    """
    Waits for the user to press any key including function keys. Returns 
    the ascii code for the key or the scancode for the function key.
    """
    while 1:
        if msvcrt.kbhit():                  # Key pressed?
            a = ord(msvcrt.getch())         # get first byte of keyscan code  
            if a == 0 or a == 224:          # is it a function key?
                b = ord(msvcrt.getch())     # get next byte of key scan code
                x = a + (b*256)             # cook it.
                return x                    # return cooked scancode
            else:
                return a                    # else return ascii code