2014-08-28 3 views
0

tkinter를 사용하여 자체 설문지를 작성하고 싶습니다. 이 설문지에는 여러 가지 질문이 있으며 모든 질문에 대해 사용자는 0에서 4까지의 숫자 값을 사용하여 응답해야합니다 ("0"은 "절대적으로"를 의미하고 "4"는 "예"를 의미 함).tkinter 라디오 버튼으로 자체 설문지 작성

나는 레이블을 사용하여 질문을 포장하고 사용자의 응답을 위해 Radiobuttons를 사용합니다.

내가 원하는 것은 모든 질문에 대해 먼저 특정 질문의 색인을 작성한 다음 사용자가 선택한 상대 응답을 얻는 것입니다. 내가 응답 라디오 버튼 만들 때 여기에 코드의 부분 : 나는 코드가 난 항상 내가 어떤 질문을 선택 어떤 라디오 버튼 같은 출력을 얻을 라디오 버튼을 클릭하여 작동하는지 테스트 할 때 ...하지만

class Questionnaire: 

    ... 

    # response alternatives (from 0 to 4) 
    def add_resps(self): 
     self.question_index = {} 
     self.var_list = [] 
     for i in range(len(self.affs)): # "self.affs" is the list of questions 
      self.question_index[i] = i 
      var = IntVar() 
      self.var_list.append(var) 
      for r in range(len(self.resps)): 
       col_Resp = 5 # previous columns are occupied by questions 
       self.wNumResp = Radiobutton(self.affs_frame, 
             text=r, 
             variable= self.var_list[i], 
             value=r, 
             command= lambda: self.get_resp(
                 self.question_index[i], 
                 self.var_list[i] 
                 ), 
             bg="white", 
             fg="black", 
             font='Arial 10 bold', 
             relief=SOLID) 
       self.wNumResp.grid(row=i, column=r+colRisp, sticky=N+E+S+W) 

    def get_resp(self, question, response): 
     print 'question n.', question, 'user\'s response:', response.get() 

를 I 응답 :

>>> 
question n. 28 user's response: 0 
question n. 28 user's response: 0 
question n. 28 user's response: 0 
question n. 28 user's response: 0 
question n. 28 user's response: 0 
question n. 28 user's response: 0 
question n. 28 user's response: 0 
question n. 28 user's response: 0 
question n. 28 user's response: 0 

아무에게 도와 줄 수 있습니까? 사전

답변

1

에서

덕분에이 루프 내부 컨트롤의 command을 지정할 때 사람들이 직면하고 일반적인 문제입니다. 모든 라디오 버튼은 명령을 만들 때 서로 다른 값을 가지고 있더라도 명령에 동일한 값인 i을 사용합니다. 변수 바인딩 동작에 대한 자세한 설명은 Local variables in Python nested functions을 참조하십시오. 실질적인 해결책은 기본 인수로 i을 제공하는 것입니다.

command= lambda i=i: self.get_resp(
       self.question_index[i], 
       self.var_list[i] 
       ), 
관련 문제