2016-10-10 3 views
0

두 함수간에 정보를 전달하는 데 문제가 있습니다. 내 'trial'함수 (아래 코드 참조) 내에서 키 누르기를 확인하고 'g'또는 'h'키를 누르면 while 루프를 빠져 나오기를 기다리고 있습니다. while 루프는 test = 1에 종속적입니다. 'check_keys'함수 내에서 'g'또는 'h'키를 누르 자마자 테스트는 2로 전환됩니다. 그러면 while 루프를 종료 할 것으로 예상됩니다. 키가 눌려 짐에 따라 (인쇄 문으로 인해) 등록되어 있다는 것을 알 수 있지만 while 루프를 종료하지는 않습니다. 'test'가 'check_keys'함수 내에서 2로 전환되었음을 알기 위해 루프를 실행하는 동안 문제가있는 것으로 보입니다. 나는 'test'를 전역 변수로 변경하려고 시도했지만 여전히 같은 문제에 봉착했다. 분명히 정보는 두 기능간에 전달되지 않습니다.Python/Psychopy : 함수간에 정보 전달

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 루프에 갇혀 있습니까? 당신이 당신의 check_keys의 세계() 안의 방법으로 시험을 선언하지 않았기 때문에

건배, 스티브

답변

1

당신은 막히다. 즉, check_keys가 test의 값을 반환하고 메인의 내용을 추적하면됩니다.

def trial(): 
    test = 1 

    while test == 1: 
     test = check_keys()