Python/Psychopy:在函数之间传递信息

2024-09-30 16:38:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在两个函数之间传递信息时遇到了一些问题。在我的“试用”功能(见下面的代码)中,我正在检查是否有按键,如果按下了“g”或“h”键,我希望退出while循环。while循环依赖于test=1。在我的“check\u keys”功能中,只要按下“g”或“h”键,test就会切换到2;然后我就会期望退出while循环。就目前情况而言,当我按下键时,我可以看到它们正在被注册(由于print语句),但它并没有退出while循环。让我的主while循环看到“test”从“check\u keys”函数中切换到2似乎有问题。我曾尝试将“test”更改为全局变量,但仍然遇到同样的问题。显然,这两个函数之间没有传递信息。你知道吗

window = visual.Window([600,600],fullscr=False,color=("black"), allowGUI=True, monitor='testMonitor', units='deg')

global test
def check_keys():       
    allKeys = event.getKeys(keyList = ('g','h','escape'))
    for thisKey in allKeys:
        if thisKey == 'g':
            print "g"
            test = 2

        elif thisKey == 'h':
            print "h"
            test = 2

def trial():
    global test
    test = 1

    while test ==1:
        check_keys()

for i in range(1):
    trial()

简言之,尽管我的条件“test”变量发生了变化,但为什么我仍停留在while循环中?你知道吗

干杯, 史蒂夫


Tags: 函数intest功能fordefcheckkeys
1条回答
网友
1楼 · 发布于 2024-09-30 16:38:14

因为没有在check\u keys()方法中将test声明为全局,所以您被卡住了。也就是说,您应该做的是让check\键返回test的值,然后在main中跟踪它:

def trial():
    test = 1

    while test == 1:
        test = check_keys()

相关问题 更多 >