내 질문은 다소 Get a layout's widgets in PyQT과 관련이 있지만 중복이 아닙니다. 그것을하는 방법에 대한 높은 수준의 전략적 견해를 찾는 대신, 나는 그것을하는 가장 관용적이고 직접적인 방법이 무엇인지 이해하려고 노력하고 있습니다. PyQt는 Qt C++ API의 정확한 바인딩이기 때문에 레이아웃에서 위젯을 얻을 수있는 C-ish 방법을 제시합니다. 여기에 사용 된 관용구의 일종이다 :PyQt 레이아웃 위젯 위로 반복
for i in range(layout.count()):
item = layout.itemAt(i)
if type(item) == QtGui.QLayoutItem:
doSomeStuff(item.layout())
if type(item) == QtGui.QWidgetItem:
doSomething(item.widget())
내가 가장 경험 파이썬 사람이 아니에요,하지만이 다소 unpythonic 보인다. 내 직관은 이상적인 세계에서 파이썬 코드는 다음과 같이 보일 것이라고 말합니다.
for w in layout.widgets():
doSomething(w)
내가 잘못 했습니까? 우수한 관용구가 빠졌습니까? 이것이 PyQt의 위젯을 반복하는 가장 좋은 방법일까요? 저는 C++로 생각하는 경향이 있습니다. 그래서 때때로 일을 더 잘하는 "명백한"파이썬 언어 기능을 놓치기도합니다. 내가하고있는 일 중 일부는 런타임에 디자이너에서 만든 UI에 대한 연결을 자동으로 연결하는 레이아웃이있는 위젯이있는 레이아웃이 포함 된 위젯으로 재귀 적으로 내림차순으로 포함됩니다. QTabWidgets을 추가하고 디자이너에서 설정 한 동적 속성을 처리하면 기본적으로 내 코드가 작동하지만 끔찍한 느낌이 들게됩니다.
난 그냥 만들고 싶어 : :) 나는 수정을했다 그래서 사실, 그냥 코멘트 – goertzenator