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

时间:2016-10-10 20:05:37

标签: python psychopy

我在两个函数之间传递信息时遇到了一些麻烦。在我的试用期内'功能(参见下面的代码)我正在检查按键,并希望退出按钮循环,如果一个'或' h'键是按下的。 while循环取决于test = 1。在我的“check_keys”中。功能,只要' g'或者' h'按键,测试切换到2;我希望退出while循环。就目前而言,当我按下按键时,我可以看到它们正在被注册(由于打印语句),但它没有退出while循环。似乎有一个问题让我的主要while循环看到' test'已从我的“check_keys”中切换到2。功能。我试过改变测试'对于一个全局变量,但我仍然坚持同样的问题。显然,信息不会在两个功能之间传递。

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()

总之;为什么我会陷入while循环,尽管我有条件的测试'变量已经改变了?

干杯, 史蒂夫

1 个答案:

答案 0 :(得分:1)

你被卡住是因为你没有将test声明为check_keys()方法的全局内部。话虽这么说,你应该做的是让check_keys返回test的值,然后在main中跟踪它:

def trial():
    test = 1

    while test == 1:
        test = check_keys()