我在两个函数之间传递信息时遇到了一些麻烦。在我的试用期内'功能(参见下面的代码)我正在检查按键,并希望退出按钮循环,如果一个'或' 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循环,尽管我有条件的测试'变量已经改变了?
干杯, 史蒂夫
答案 0 :(得分:1)
你被卡住是因为你没有将test声明为check_keys()方法的全局内部。话虽这么说,你应该做的是让check_keys返回test的值,然后在main中跟踪它:
def trial():
test = 1
while test == 1:
test = check_keys()