본문 바로가기

프로그래밍 관련/PyQt31

Pyqt 메뉴 만들기 상위메뉴 파이썬[Python GUI, PyQt5 Tutorial 021] 메뉴바(Menu Bar) 만들기 (tistory.com) 최상단 메뉴바 1개 만들기 만들어진 메뉴바에 선택지 만들기 각 선택지 아래에서 실제 실행될 액션 만들기 아래 예시코드 복붙해서 실행시켜보면서 코드를 보면 이해 될 것임 import sys from PyQt5.QtWidgets import * class MyWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Test") self.setGeometry(1000, 200, 700, 700) #최상단 메뉴바 생성하기 menubar = self.menuBar() #만들어진 메뉴바에 선택지 3개 만들기 .. 2022. 8. 14.
PyQt 라디오버튼 radio button(2) group box 한편 여러개의 라디오버튼 중에 1개만 선택된다고 했는데, 여기서 문제가 있다. 예를 들어 버튼2개중에 1개만 선택, 버튼3개중에 1개만 선택 이렇게 묶고 싶은 경우가 있을 수 있는데 앞의 예시처럼 라디오버튼 5개를 만들면 2개중에 1개선택, 3개중에 1개선택 이렇게 독립적으로 가는게아니라 그냥 버튼 5개중에 1개만 선택 가능하도록 그런식으로 구성된다. 그래서 라디오버튼을 서로다른 별개의 그룹으로 묶는 기능이 필요한데 이 때 사용하는게 group box다. 라디오버튼을 group box 위에 올려놓고 쓰면 해당 group box 안에 들어있는 라디오버튼 끼리만 exclusive하게 동작하게 된다. groupbox1 라디오1-1 라디오1-2 라디오1-3 2022. 8. 14.
PyQt 라디오버튼 radio button(1) 라디오버튼 기초 개념 PyQt 라디오버튼 radio button(1) - 기본개념 유저에게 어떤 메뉴를 선택하게 만드는데, 여러개의 보기중에 1개만 고를 수 있도록하는 기능 그때 사용하는게 라디오 버튼인데 말로 설명하니까 이해 안 될 수 있는데 예를 들어 시험 문제의 정답 고를때 4개의 보기중에 1개만 선택해야되는 그런 버튼 기능을 하는게 라디오버튼이다. 04) QRadioButton - PyQt5 Tutorial - 파이썬으로 만드는 나만의 GUI 프로그램 (wikidocs.net) 위 사이트 출처 . 감사합니다. 관련 메소드 setChecked() . 해당 버튼을 선택상태로 만듬 isChecked(). 해당 버튼이 현재 선택 된 상태인지 알려줌 관련 시그널 clicked() -> 해당 라디오버튼 클릭 됐을 때 toggle.. 2022. 8. 14.
PyQt. GUI 변경을 외부쓰레드에서하는 것 PyQt의 GUI 객체에서 실제 GUI를 변동시키는 메소드를 구현했을때, 이것을 외부의 쓰레드에서 직접 호출하는 경우 문제가 발생할 수 있다. 이런 경우 동작이 아예 안되거나 프로그램이 멈추거나 하는건 아닌데 경고 메세지가 뜬다. 예시를 들어 설명하겠다. 암튼 메인 page에 있는 gui를 변경하거나 하는 등의 동작을, 외부 스레드에서 하고싶다면 해당 메소드를 외부스레드에서 직접 호출하는게 아니라 유저디파인 시그널 슬롯을 사용한다. 특정 조건이 만족됐을때, 외부스레드에서 메인 gui 관련 메소드를 호출하지말고 메인 gui 객체에 시그널만 날려주자. 메인 gui객체는 이 시그널을 슬롯으로 받아서 gui 를 조작하는 메소드를 부르는 방식으로 구현하면된다. 시그널 슬롯 쓰는 방법은 아래 다른 글 참조. 2022. 6. 15.
PyQt. 사용자 정의 시그널 https://wikidocs.net/70990 내용 공부한 것임 사용자 정의 시그널 사용할 때 pyqtSignal이라는 클래스를 사용하는데, 참고로 이 클래스는 QtCore에 정의되어있음 적절하게 Import 해서 사용하면 됨. 아래 예시 코드의 경우 from PyQt5.Qtcore import * 로 import를 해서 앞에 수식어 없이 그냥 곧바로 pyqtSignal 이라고 사용했다. 아래 코드 예시를 보면 쉽게 이해할 수 있을거라 생각하는데 그래도 부연설명 추가. 사용자정의 시그널을 만드는 방법은 일단 pyqtSignal class를 사용해서 객체를 만든다. 객체를 만들 때, 인풋 파라미터에 대해서 정의할 수 있는데 여기서 정의하는 파라미터는 곧 시그널이 슬롯으로 전달 될 떄 전달될 데이터를 의미.. 2022. 6. 15.
PyQt. 시그널 슬롯에 대하여 개요 Pyqt를 사용하여 프로그램이 실행되면 gui 창이 계속 떠있게 되는데 이것은 말하자면 일종의 쓰레드에 gui 객체가 계속 돌고있는 것임. 이 쓰레드에서 돌고있는 객체에게 특정한 이벤트가 발생했을때 신호를 전달하는게 '시그널'임. 슬롯은 이러한 시그널을 받았을때 발생하는 동작(Reaction)을 의미함. 가장 간단한 시그널 슬롯의 예시로 버튼 이벤트가 있음. 유저가 버튼을 클릭하는게 시그널이고, 이 버튼에 connect 시켜놓은 function이 슬롯이 된다. 위젯들은 각자 다양한 시그널들을 갖고있다. 이것은 위젯마다 각자 다른걸 갖고 있어서 여기서 일일이 설명하진 않는다. 대표적 예시를 몇가지 들자면 push button의 클릭. 테이블이나 트리에서 특정 데이터가 선택됐을때 등등 다양한 시그널들이.. 2022. 6. 15.
PyQt gui 경고창 띄우기 Qmessagebox QMessageBox().about("창이름" ,"메세지 내용") 2021. 12. 7.
PyQt 혼자 공부 할 때 알아둬야 할 팁들 요약: 1.VsCode의 자동완성 기능 사용하자 (클래스이름,메소드이름,멤버변수 이름) 2.VSCode의 Definition 기능 활용하자 3,정확한 내용은 구글링 및 QT 라이브러리 홈페이지 참고하자 ※ QT 라이브러리 홈피 : Search Results (qt.io) 4. PyQt 의 클래스들은 대부분 상속에 상속에 상속을.. 받는 형태로 구성돼있다는 걸 참고로 알아두자. 1. VsCode를 반드시 사용하자 VsCode 없이는 PyQt 솔직히 공부 못했을 것 같다. VsCode 자동완성 기능이 매우 편리해서 이걸 꼭 활용해야 한다. 1-1) 사용하려는 클래스의 이름을 찾은 후, 에디터 상에 일단 객체를 선언해본다. 예를 들어 내가 QTableWidget 클래스와 관련된 작업을 한다고 가정하면 from.. 2021. 12. 5.
PyQt 사용시 from, import 관련 알아 둘 것 PyQt 모듈에 정의된 클래스 들을 사용하려면 from 또는 import 명령을 사용해야한다. 인터넷에 있는 PyQt 관련 자료, 교재에서 가끔씩 앞에 from, import 부분을 생략하고 소스코드를 올려주는 경우가 있어서 종종 동작이 안될때가 있으니 아래 개념을 꼭 알아두자. 예시1) QTableWidget 클래스를 사용하고 싶은 경우 해당 클래스는 QtWidgets.pyi 안에 정의가 되어있다. QTableWidget 클래스를 사용하려면 방법이 2가지가 있다. 방법1) from PyQt5.QtWidgets import * self.ta1 = QTableWidget(self) 방법2) from PyQt5 import QtWidgets self.ta1 = QtWidgets.QTableWidget(sel.. 2021. 12. 5.