Python/PyQt5
-
[PyQt5] QTableWidget sortingEnabled 사용시 에러 주의Python/PyQt5 2022. 1. 10. 10:52
QTableWidget sortingEnabled 테이블의 컬럼명을 클릭하면 정렬을 해주는 기능인데 한 번 써보면 끊을 수 없을 정도로 편리한 기능이다. 하지만 소팅이 걸린 상태에서 데이터를 집어 넣으면 다운될 수 있다. 새로 입력되는 데이터에 대한 정렬을 계속 반복해 오버로드가 발생해서 그런 것 같다. (아님 말고) 테이블에 데이터 입력 시에는 소팅을 해제하자. view = self.tb_search_result view.setSortingEnabled(False) 입력이 끝나고 가능으로 바꿔주면 된다. selectionChanged 비슷한 것으로 selectionChanged 가 있다. 이 기능을 사용하면, 키보드로 테이블을 이동할 때도 이벤트가 발생한다. 마우스로 일일히 클릭할 필요가 없다. 역시 ..
-
[PyQt5] QSqlQuery::value: not positioned on a valid recordPython/PyQt5 2022. 1. 9. 00:53
sql = "SELECT note, rating FROM data WHERE id=1234" query = QSqlQuery(sql) query.first() print(query.value(0)) print(str(query.value(1)) 데이터가 없는 데 query.first() 등을 실행할 때 value: not positioned on a valid record 경고가 발생한다. 작동은 되지만 보기 좋지 않다. sql = "SELECT note, rating FROM data WHERE id=1234" query = QSqlQuery(sql) if query.first(): print(query.value(0)) print(str(query.value(1)) 이렇게 if문으로 처리해 주면 깔끔..
-
[PyQt5] webbrowser openPython/PyQt5 2022. 1. 8. 21:37
Python에는 webbrowser 라이브러리가 있어, 다음과 같이, 쉽게 웹 브라우저를 실행할 수 있다. >>> import webbrowser >>> webbrowser.open('comdoc.tistory.com/') False >>> webbrowser.open('https://comdoc.tistory.com/') True * http[s]:// 로 시작해야 한다. QT에도 같은 기능이 있는데.... from PyQt5.Qt import QDesktopServices, QUrl url = QUrl('https://comdoc.tistory.com/') QDesktopServices.openUrl(url) 임포트 문의 깔끔함을 위해서 기억해도 좋을 것 같다..
-
[PyQt5] 7. Qt DesignerPython/PyQt5 2021. 5. 20. 21:22
Qt Designer 의 설치 경로 Qt Designer는 pyqt5-tools 패키지를 설치한 뒤 다음 경로에서 찾을 수 있습니다. path_of_projects\venv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe 바로가기를 프로젝트 폴더에 만들어 두는 게 편합니다. 객체 탐색기 객체 탐색기로 객체의 트리 구조를 보면서 작업합니다. 미리 보기 CTRL+R으로 미리 보기 하면서 작업합니다. .ui 파일 GUI를 만든 뒤 .ui 라는 확장자로 저장할 수 있고, 이 파일은 XML 형식의 텍스트 파일입니다. Form 0 0 400 300 Form 0 0 0 0 PushButton false https://github.com/pycrawling/pyqt5_..
-
[PyQt5] 6. WidgetsPython/PyQt5 2021. 5. 19. 16:46
Qt5에는 다음과 같이 다양한 위젯이 있습니다. 다행히 아이콘만 보더라도 대부분의 위젯이 어떤 용도로 사용되는지 알 수 있습니다. 비슷비슷한 위젯을 비슷비슷한 코드로 나열하는 것은 지루한 일입니다. 공식 문서와 구글링 및 Qt Designer 사용을 추천드리고, 여기서는 제가 자주 쓰는 위젯만 간단히 나열하겠습니다. QLabel: 텍스트, 리치 텍스트, 그림, 영상 등을 구현할 수 있음. QLineEdit: 원 라인 에디터, 패스워드 가능. QTextEdit: 멀티 라인 에디터, 리치 텍스트 지원. QGroupBox: 그룹 박스, 프레임과 제목을 지원하는 컨테이너. QCheckBox: 체크박스 QPushButton: 푸시 버튼 QRadioButton: 라디오 버튼 QListBox: 리스트 박스 QComb..
-
[PyQt5] 5. layoutPython/PyQt5 2021. 5. 19. 14:18
레이아웃은 위젯들을 담아두는 틀입니다. 레이아웃을 잘 이용하면 자동으로 줄 맞춤이 되고, 좌표를 하드 코딩할 필요가 없어 유연한 GUI를 만들 수 있기 때문에, 무척 편합니다. 하드 코딩은 데이터를 직접 코드 내에 넣어두는 것을 말합니다. 레이아웃을 사용하면 (좌표에 관련된) 숫자는 거의 사용하지 않습니다. 최상위 위젯을 QMainWindow에서 QWidget으로 바꿨습니다. 이유는 마지막에... QVBoxLayout QVBoxLayout이라는 클래스가 보입니다. V는 Vertical(세로)에서 나왔다는 걸 알 수 있죠. QVBoxLayout 클래스로 layout 인스턴스를 만들어서 layout 인스턴스에 위젯들을 하나씩 addWidget 해 주었습니다. addWidget으로 상위 위젯에 add해주기 때..