[Utils] QCheckBoxUtils
·
[Framework] - PyQT
from PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import QWidgetfrom PyQt5.QtWidgets import QHBoxLayoutfrom PyQt5.QtWidgets import QCheckBoxclass QCheckBoxUtils: @staticmethod def check_box_aligned_center(): widget = QWidget() layout = QHBoxLayout() check_box = QCheckBox() layout.setAlignment(Qt.AlignCenter) layout.addWidget(check_box) widget.setLayo..
QGIS MV (Model-View) 패턴
·
[Framework] - QGIS
필자는 QGIS Framework의 위와 같은 UI에서 여러 그룹을 선택했을 때 해당 그룹들을 반환하는 유틸을 작업했다. QGIS에서 자체적으로 선택된 레이어를 반환하는 QgisInterface.activeLayer() 메소드가 있지만 해당 메소드는 하나의 레이어밖에 못가져오는 한계가 있다. 일단 이 포스트를 시작하기 이전에 염두해야할 사항이 있다. 1. QGIS Framework는 PyQT 기반이라는 것2. MV (Model-View) 패턴으로 UI가 구성되어 있다는 것 우선 다음과 같은 코드로 레이어 패널에 속한 그룹의 트리(QgsLayerTree)를 가져왔다.root = QgsProject.instance().layerTreeRoot() 그리고 해당 트리를 model에 import한 다음 view에..
closeEvent
·
[Framework] - PyQT
다이얼로그를 띄운 상태에서 해당 다이얼로그를 띄우는 버튼을 누르면 중복되서 띄워지는 현상이 발생했다.. -_-;; 그래서 혼자 예외처리를 한 결과.. if not self.dialog_legend: DialogLegend(....)다이얼로그 객체가 존재하지 않은 경우에만 띄우도록 예외처리를 했다. 그랬더니 문제가 발생했다. 중복되는 현상은 방지할 수 있었지만, 창을 닫고나서 두 번째부터 창을 띄울 수 없게 된 것이다. 이는 다이얼로그 객체가 남아있게 때문에 해당 조건문을 만족시키지 않기 때문이었다. 그렇다면 해당 객체를 없애냐? 그렇게 되면 이벤트가 발생하지 않는 좀비상태로 빠져버리고 말것이다.. 그 순간! 옆에 계신 선배님이 팁을 주셨다. closeEvent class DialogLegend(Q..