파이썬 반복문 질문입니당
조회수 1876회
#==============================================================
self.label_5.setStyleSheet("QLabel { background-color : white; color : blue; }")
self.label_6.setStyleSheet("QLabel { background-color : white; color : blue; }")
self.label_7.setStyleSheet("QLabel { background-color : white; color : blue; }")
self.label_8.setStyleSheet("QLabel { background-color : white; color : blue; }")
#==============================================================
위의 장문의 코드를 포문을 이용해 아래와 같이 해볼려했는데요
for i in range(5,9):
self.label_i.setStyleSheet("QLabel { background-color : white; color : blue; }")
보시다시피 변수명에 i를 넣은거라 구문오류가 뜹니다.
포문을 이용해서 맨 위의 긴 코드를 어떻게 줄일 수 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
정석대로라면 부모 위젯에서 자식들의 리스트를 얻고 반복하는 식이 되어야 할 겁니다.
코드를 보니 사람이 이해하는 소스코드와 컴퓨터가 이해하는 바이너리 코드를 구분 못하는 것 같습니다.
label_i 는 사람이나 이해할 수 있지 소스코드가 컴파일이 되면 label_i 같은건 없는 겁니다.
물론 파이썬은 인터프리터 언어라 reflection이 쉽게 가능하긴 합니다.
getattr(self, 'label_5') # label_5 필드
for i in range(5, 8): getattr(self, 'label_{}'.format(i))
와 같이 할 수 있습니다.
-
댓글 입력