본문 바로가기

파이썬-PySide6(PyQt6)

PySide6 메모장 만들기: 열기, 저장 및 끝내기 구현 지난 시간에는 지난 시간에는 QtDesigner 내에서 ①파이썬 코드를 생성한 후 복사해서 파이참에 붙여넣는 방식으로 ui변환을 생략하고 파일을 직접 업데이트하는 방법을 보여드렸습니다. ②또한 "새 창(W)" 메뉴를 클릭했을 때 윈도우 인스턴스가 하나 더 생성되도록 시그널(triggered)과 슬롯(add_window메서드)을 연결하는 작업도 해보았고, 가장 중요하다고 할 수 있는 ③레이아웃과 플레인텍스트 위젯도 배치해보았습니다. 해당내용이 궁금하신 분은 아래 링크를 참고해주시기 바랍니다. 1. PySide6 메모장 만들기 - 위젯 추가하기 우린 지금 어디쯤? 지금 우리는 윈도우10의 기본프로그램 중 하나인 메모장을 PySide6로 클론코딩하는 작업을 진행하고 있습니다. 지난 포스팅에서는 메모장의 틀을 .. 더보기
1. PySide6 메모장 만들기 - 위젯 추가하기 우린 지금 어디쯤? 지금 우리는 윈도우10의 기본프로그램 중 하나인 메모장을 PySide6로 클론코딩하는 작업을 진행하고 있습니다. 지난 포스팅에서는 메모장의 틀을 만들고, 메뉴바를 완성했습니다. (아직 메뉴바에 기능을 구현하지는 않은 상태이고요.) 이번 두 번째 포스팅에서는 QtDesigner로 텍스트에디트 위젯을 추가하고 기본적인 기능을 구현하는 과정을 같이 진행해보려고 합니다. 포스팅 관련 궁금한 점은 댓글로 남겨주시면 답변 달아드리겠습니다. QtDesigner 여는 건 익숙해지셨나요? 이번 시간엔 파이참으로 디자이너를 열어봅시다. Alt-F12를 눌러 터미널을 연 후에, "pyside6-designer"라고 입력하고 엔터를 쳐보세요. 지난 번에 완성했던 ui파일을 아래 첨부해 둡니다. 다만, 디자.. 더보기
1. PySide6-QtDesigner, 윈도우메모장 클론코딩!!1/? + uic팁 지난 포스팅은... 1. PySide6의 QtDesigner를 사용해봅시다.(1/2) QtDesigner 실행해보기 pip를 통해 PySide6를 설치했다면, 파이썬폴더\Library\bin이나 파이썬폴더\Lib\site-packages\PySide6 폴더 안에 designer.exe(또는 pyside6-designer.exe)가 같이 설치되어 있습니다. 귀.. www.martinii.fun 이번 시간부터는: QtDesigner로 윈도우 메모장 클론코딩 아무리 마음가는대로 튜토리얼을 짓는다지만, 이렇게 해도 되나 싶기는 합니다. 원래는 디자이너 가볍게 잡고 Qt+Matplotlib 시각화나, Qt+Pandas 스프레드시트 쪽으로 진행하고 싶었는데, 너무 밑천을 일찍 드러내는 거 아닌가 싶어 이렇게 결정하.. 더보기
1. PySide6의 QtDesigner를 사용해봅시다. QtDesigner 실행해보기 pip를 통해 PySide6를 설치했다면, 파이썬폴더\Library\bin이나 파이썬폴더\Lib\site-packages\PySide6 폴더 안에 designer.exe(또는 pyside6-designer.exe)가 같이 설치되어 있습니다. 귀찮다면 시작버튼을 누르고 "designer"를 입력하면 아래와 같이 프로그램 목록에 하나 튀어나올 것입니다. 최초 실행화면은 아래와 같습니다. (조금 부족한 듯 싶지만,) 지금까지 PySide에 대한 튜토리얼을 통해 QWidget이나 QMainWindow를 상속한 GUI창을 만들어보았습니다. 간단한 창이라면 코드를 사용해서 제작하는 걸로도 충분하지만, 어느 정도 규모를 넘어서거나, 섬세한 사이즈조절을 하기 위해서는 코드만으로는 까다로운.. 더보기
0. PySide6의 시그널-슬롯 활용예제: 다른 위젯을 슬롯으로 연결하기 PySide 시그널-슬롯 활용예제2 QLineEdit의 textChanged 시그널을 QLabel.setText 슬롯과 연결하기 안녕하세요? 이번 포스팅을 시작하기 전에 지난 포스팅에서 작성했던 코드를 최대한 간단히 요약해서 다른 사람에게 설명하려면 뭐라고 하시겠어요? 참고하시라고 지난 번 작성한 코드를 여기 적어볼게요. from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.button = QPushButton(parent=self) self.setCentralWidget(s.. 더보기
1. 시그널-슬롯 응용예제(버튼에 클릭횟수 표시)와 클래스 기본개념 지난 포스팅에서는 Signal&Slot의 기본 개념을 짧은 설명과 최소한의 코드를 통해 가볍게 설명을 드렸습니다. 지난 포스팅 마지막에, 시그널을 통해 변수의 값을 바꾼다든지, 인터페이스를 변경하거나, 혹은 위젯에서 슬롯을 거치지 않고 직접 다른 위젯에 영향을 주는 등의 응용방법이 있다는 설명을 드렸습니다. 1. PySide6의 Signal과 Slot에 관하여 시그널과 슬롯 짐작컨대 이 몇 개 안 되는 튜토리얼 시리즈를 따라오시면서, 여러분이 가장 많이 하셨던 생각 중 하나는, "그래서 이 버튼이 뭔가 액션을 하게 하려면 어떻게 해야 하나?" 일 거라 www.martinii.fun 이번 시간에는 그 활용예제 중 하나를 클래스를 곁들여 가볍게 다뤄보도록 하겠습니다. (메인 윈도우 디자인하다가 갑자기 Sig.. 더보기
1. PySide6의 Signal과 Slot에 관하여 시그널과 슬롯짐작컨대 이 몇 개 안 되는 튜토리얼 시리즈를 따라오시면서, 여러분이 가장 많이 하셨던 생각 중 하나는,"그래서 이 버튼이 뭔가 액션을 하게 하려면 어떻게 해야 하나?"일 거라고 생각합니다. 지금까지 QWidget이나 QMainWindow 혹은 (QWidget을 상속한) QMainWindow를 상속한 MainWindow라는 클래스를 통해서도 GUI윈도우를 만들어봤고, 창 안에다 푸쉬버튼도 하나 넣어봤는데 이제 이 버튼이 뭔가 작동하게 만들어볼 시간이 되었습니다.뭔가 작동하게 하는 코드는 굉장히 간단합니다. 이걸 알려드리기 전에, 시그널과 슬롯이라는 용어에 대해서 먼저 설명드리려고 합니다.지금 우리가 원하는 건,지금 우리가 원하는 건 "버튼을 눌렀을 때", "뭔가 작동한다" 입니다.직관적으로 .. 더보기
1. PySide6의 QMainWindow에 대해 알아봅시다. QMainWindow 이전 포스팅에서 여섯 줄의 코드로 QWidget 창을 화면에 띄워봤고, QWidget 대신 QPushButton을 사용해서, 한 개의 위젯이 한 개의 창이 될 수 있다는 부분을 말씀드렸습니다. 나만 사용하는 스크립트에 GUI를 붙이는 수준의 작업이라면, 거창하게 GUI를 설계할 것이 아니라, 파일경로나 폴더를 선택하는 정도의 버튼이면 충분한 경우가 많잖아요? 나아가 여러 가지 기능을 포함하고 있거나, 어느 정도 탄탄한 수준의 앞단을 만들기 위해서는 QWidget으로는 까다로운 부분이 많기 때문에, 미리 설계된 뼈대가 숨겨져 있는 QMainWindow를 사용하면 간편하게 구조화된 GUI 윈도우를 만들 수 있다고 말씀드렸습니다. 파이썬의 유명한 웹프레임워크 "장고"처럼요. (적절한 표현.. 더보기
1. QMainWindow를 소개드리기 전에, QPushButton만 더 설명드리고... QMainWindow를 소개드리기 전에 안녕하세요? 회사원코딩입니다. 최근 튜토리얼에서는 PySide6(Qt)로 창을 생성하는 최소한의 코드를 보여드렸습니다. 1. PySide6에서 가장 기초가 되는 QApplication과 QWidget PySide6에서 가장 기초가 되는 두 가지 클래스, QApplication과 QWidget 안녕하세요? 회사원코딩입니다. 이번 포스팅에서 설명드릴 코드는 가장 단순한 창만들기입니다. 임포트문을 제외하면 네 줄밖에 www.martinii.fun from PySide6.QtWidgets import QApplication, QWidget app = QApplication() window = QWidget() window.show() app.exec_() 위 코드에서는 Q.. 더보기
[4/?] Qt에서의 이벤트루프란 무엇인가? 이벤트루프란 무엇인가? 지난 포스팅에서 QWidget으로 빈 창을 만드는 간단한 예제를 같이 따라해보았습니다. 1. PySide6에서 가장 기초가 되는 QApplication과 QWidget PySide6에서 가장 기초가 되는 두 가지 클래스, QApplication과 QWidget 안녕하세요? 회사원코딩입니다. 이번 포스팅에서 설명드릴 코드는 가장 단순한 창만들기입니다. 임포트문을 제외하면 네 줄밖에 www.martinii.fun 코드설명 중간에 "app.exec_()를 실행하면 이벤트루프가 시작된다"라는 표현을 사용했습니다. 그리고, "이 명령어를 실행하는 시점에서 우리가 만든 GUI 윈도우가 반응하고 움직이기 시작합니다."라고 말씀드렸는데, 이 이벤트루프에 대해서 조금만 자세히 다루고자 이 포스팅을.. 더보기
[3/?] PySide6에서 가장 기초가 되는 QApplication과 QWidget PySide6에서 가장 기초가 되는 두 가지 클래스, QApplication과 QWidget 안녕하세요? 회사원코딩입니다. 이번 포스팅에서 설명드릴 코드는 가장 단순한 창만들기입니다. 임포트문을 제외하면 네 줄밖에 아닌데요. 라인별로 설명드리고 포스팅을 마치겠습니다. import sys from PySide6.QtWidgets impor QApplication, QWidget app = QApplication(sys.argv) window = QWidget() window.show() app.exec_() 위의 코드를 실행해보겠습니다. 라인별로 설명드리겠습니다. [1] import sys 파이썬 내장모듈인 sys 를 임포트합니다. sys가 쓰이는 곳은 딱 하나인데, QApplication클래스로 app .. 더보기
[2/?] Pythonic에 집착하는 분들을 위한 Pyside 팁[feat. __feature__] 파이써닉이 아니면 불편한 분들 계시죠? 우선 pythonic이 뭔지 모르시는 분들을 위한 설명부터.. 안녕하세요? 회사원코딩입니다. 파이썬을 공부하다 보면 이런저런 책에서 이야기하는 "파이써닉"이라는 단어가 종종 튀어나옵니다. Qt 포스팅 하다가 무슨 파이써닉을 꺼내냐는 분도 계실텐데, 사실 제가 Qt를 알려드리는 게 아니고, PySide, 특히 PySide6를 알려드리는 튜토리얼이기 때문에 이 말씀을 먼저 드리는 게 좋겠다는 생각이 듭니다. 사실 파이써닉은 대부분의 파이썬 개발자들 사이에 통하는 일종의 "파이썬다움"인 것 같아요. 파이써닉함이 지켜지지 않은 코드를 읽다 보면 어떤 부분에서는 불쾌해지기도 하죠. (오타쿠인가 싶겠지만 아주 사소한 코드나 변수 가지고도 정말 그렇게 되더라고요..) '뭐지, .. 더보기
[1/?] 개발환경과 PySide6 모듈 설치 본문의 GIF(움짤)들은 클릭하기 전에는 초반1초 정도만 반복해서 보여줍니다. 별도로 클릭을 해주셔야만 끝까지 재생이 되는 점 유의하여 주시기 바랍니다. 개발환경과 모듈 설치 개발환경 설치 저는 본 튜토리얼을 진행하면서 모든 코딩을 "파이참"으로 진행할 예정입니다. 가급적이면 VSCode 등 여러분이 익숙한 통합개발환경을 사용하시면 좋겠지만, 딱히 그런 게 없거나, (더욱 그럴 리 없겠지만) 통합개발환경이 뭔지 모르시는 분이라면 젯브레인스 홈페이지에 가셔서 파이참 커뮤니티 버전을 설치하시는 것을 추천드립니다. 이번 포스팅에서는 간략하게 파이참의 기본사용법과 pyside6 모듈을 설치하는 과정까지 진행해보겠습니다. 파이참 커뮤니티버전 다운로드 링크 Thank you for downloading PyChar.. 더보기
0. 튜토리얼을 시작하며 튜토리얼을 시작하며, 저는 IT분야에서 일하는 사람도, 코딩을 전문으로 하는 사람도 아닙니다. 우리나라 보통 회사 지방사업소에 기술직으로 들어와서 업무와 강의를 병행하고 있는 일개 회사원입니다. 다른 포스팅에서도 살짝 말씀드린 적이 있지만, 행정업무가 너무 많다 보니 엑셀자동화를 배우다가 파이썬도 배우게 되고, 터틀로 그림도 그려보고, 어쩌다 보니 크롤링이나 간단한 해석프로그램도 파이썬으로 직접 만들어보게 되고, 닥치는 대로 각종 분야에 슬며시 침투해 있는 파이썬의 영역을 틈틈이 맛보고 있습니다. 물론 재미로 배울 뿐, 심도있게 배우지는 않습니다. 이 포스팅을 읽어내려가시는 여러분도 저와 비슷한 수준이었으면 좋겠다는 생각을 감히 해봅니다. 제가 고민하는 문제를 비슷하게 고민하고, 제가 당시에 중요하다고 .. 더보기
0. 2021년, 드디어 PyQt6와 PySide6가 릴리즈되었습니다. 파이썬 GUI 라이브러리의 선두주자 Qt for Python 6 릴리즈 드디어 PyQt6 배포와 함께 Qt for Python, 즉 PySide2가 PySide6라는 이름으로 배포되었습니다(재미있게도 PyQt6가 올 1월 배포되었는데, PySide6는 작년 12월, 조금 더 일찍 배포가 시작되었습니다). Qt의 공식 파이썬 바인딩 지원버전인 Qt for Python(PySide)의 세 번째 메이저버전이 PySide3가 아니고 PySide6인 점에 의아하다는 분들도 계실 것 같은데요. Qt와 넘버링을 같이 가져가겠다는 의지로 보입니다. 공식 PyPI 홈페이지는 아래와 같습니다. PySide2와 PyQt5의 차이점은? 한 번이라도 PyQt 등으로 GUI를 짜 보신 분이라면 PyQt5와 PySide2의 차이점.. 더보기