2017-12-11 132 views
0

PyQGIS를 사용하여 레이어의 필드 이름 수를 기반으로 위젯을 동적으로 생성합니다. 위젯은 성공적으로 생성되지만 올바르게 배치되지는 않습니다. 파이썬을 사용하여 라인 편집기 상자를 중간에 배치하는 방법이 있습니까? 아래에는 동적으로 위젯을 작성하는 코드가 나와 있습니다. 당신은 당신이 QFormLayout를 사용해야합니다 양식의 순서를 얻으려면 동적으로 생성 된 위젯을 PyQT에 배치하는 방법

enter image description here

selectedLayerIndex = self.dlg.comboBox.currentIndex() 
selectedLayer = layers[selectedLayerIndex] 
fields = selectedLayer.pendingFields() 
fieldnames = [field.name() for field in fields] 
for i,field in enumerate(fieldnames): 
    self.labels = QLabel() 
    self.linedit = QLineEdit() 
    self.labels.setText(field) 
    self.linedit.setFixedWidth(100) 
    self.dlg.verticalLayout.addWidget(self.labels) 
    self.dlg.verticalLayout.addWidget(self.linedit) 

는 내가 텍스트 상자이

enter image description here

+0

중간에 무엇을 의미합니까? 당신은 당신이 그래픽으로 얻고 싶은 것을 설명 할 수 있습니다. – eyllanesc

+0

게시물을 편집했습니다 – Farook

답변

0

같은 것을 배치해야합니다.

selectedLayerIndex = self.dlg.comboBox.currentIndex() 
selectedLayer = layers[selectedLayerIndex] 
fields = selectedLayer.pendingFields() 
fieldnames = [field.name() for field in fields] 
flay = QFormLayout() 
for field in fieldnames: 
    le = QLineEdit() 
    le.setFixedWidth(100) 
    flay.addRow(field, le) 
self.dlg.verticalLayout.addLayout(flay) 
+0

좋아요! 고마워. – Farook