IT/파이썬 2021. 3. 19.
파이썬 pyside2 IP address 입력 창 만들기 - PyQt5 QLineEdit
파이썬 pyside2 IP address 입력 창 만들기 PyQT5, Pyside2를 이용한다면 아래 코드를 참고하면 IP address만 받는 입력 박스을 얻을 수 있다. 정규식과 Validator 를 활용하는 방법이 정말 좋아 보인다. ipRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])" # Part of the regular expression # Regulare expression ipRegex = QRegExp("^" + ipRange + "\\." + ipRange + "\\." + ipRange + "\\." + ipRange + "$") ipValidator = QRegExpValidator(ipRegex, self) lineEdit = QLine..
IT/파이썬 2021. 3. 16.
파이썬 여러 widget 이 하나의 슬롯(callback/signal) 함수 사용하기
버튼 클릭이든, cellchanged 든 위젯을 쓰다보면 이벤트에 반응하는 함수를 구현해서 써야 한다. 버튼이 여러개 인데 거의 동일한 기능을 한다든지 혹은 위젯 배열로 구성했다던지 할 때 각각 signal 함수를 만들면 편리한 점도 있지만, 코드 낭비가 심하다는 기분이 많이 든다. 그래서 찾아보니 sender() 라는 함수가 있어서 동일한 함수를 써도 누가 보내는지 구분할 수 있도록 되어 있다. 이젠 거의 대부분 같은 기능을 하는 중복 함수라면 같이 사용하면 되겠다. 아래 예제 코드의 일부분은 QLineEdit 위젯에 글자를 쓰면 원하는 글자만 받도록 만드는 filter 기능을 넣고 싶을 때 사용한 코드이다. 물론 QLineEdit 가 배열형태로 많이 있는 페이지에서 동일한 필터를 사용하는 경우 사용하..
IT/파이썬 2021. 2. 27.
파이썬 pyside2 layout에 버튼, 라벨 위젯 추가시에 쓰는 함수
파이썬 pyside2 layout에 버튼, 라벨 위젯 추가시에 쓰는 함수 보통은 그냥 addWidget 을 써버리는데, 이게 추가하는 순서대로 놓아지니깐, 나중에 뒤에 추가하는 것을 앞으로 정렬하고 싶을때 또 인덱스를 찾아서 지우고 삽입하는 과정을 해야 하는 것으로 레퍼런스가 많이 되어 있다. 그냥 런타임에 바뀌는 것이 아니라면, 원하는 순서대로 자기가 넣을 수 있도로고 addWidget 대신에 insertWidget 함수를 사용하면 편리하다. 아래처럼 말이다. # 원래코드 # self.ui.horizontalLayout_5.addWidget(self.ui.btn_search) # index 정보를 넣을 수 있는 insertWidget 사용한 코드 self.ui.horizontalLayout_5.inse..
IT/파이썬 2021. 2. 26.
파이썬 pyside2 버튼 글자 왼쪽 정렬
pyside2 pyqt5에서 QPushButton에 이미지도 넣고 글자도 넣고, 왼쪽으로 정렬하고자 한다면, 아래 그림처럼 (qpushbutton icon left alignment text left alignment) 간단하게 스타일시트 하나 적용하면 된다. 버튼이름.setStyleSheet("QPushButton { text-align: left; }") 추가로, 아래 내용도 넣어 주면 좋을 듯 background-position: left; background-repeat: no-reperat; 이글은 질문에서 답을 찾아온 것입니다. 아래 질문은 더 어려운걸 요구하셔서 ㅋㅋ 이미지는 왼쪽 정렬, 글자는 가운데 정렬 머 우리는 간단하게 통일하자고~~ stackoverflow.com/questions/..
IT/파이썬 2021. 2. 24.
파이썬 pyside2 QSplitter 한쪽은 fix 한쪽은 expand 되도록 수정하기
QSplitter 를 하나 놓아서, 아래 그림의 1, 2번 프레임들이 자유롭게 사이즈를 조정할 수 있게 구성했다. 앗 그런데, 창을 키우니깐 비슷한 비율로 크기가 커지는게 아닌가? 나는 1번창은 조정한 그대로 두고, 창 사이즈가 변경되면 2번만 조정되도록 하고 싶은데.. 보통의 layout 처럼 Qt Designer 상에서 QSplitter 속성에 layoutStretch 를 조정하는 부분이 없어 잠시 당황. (아래아래 그림 참고) 결국 코드로 그것을 구현할 수 밖엔 없었다..(적어도 내가 아는 범위에서는 ㅋㅋ) 코드는 아래와 같다. splitter인스턴스이름.setStretchFactor( 0, 0 ) splitter인스턴스이름.setStretchFactor( 1, 1 ) 앞에 인자는 인덱스고, 뒤에 ..
IT/파이썬 2021. 2. 2.
파이썬 pyqt5 pyside2 윈도우 창 상태 - maximized 확인
현재 창의 상태가 최대창 상태인지 알 수 있는 방법 흐흐 너무 쉽다. 아래 코드에서 self.isMaximized() 함수를 부르면 당장 알 수 있다. 이런 방법을 이용해서 F11 키를 누르면 창을 최대화 하고 ESC를 누르면 창을 닫는 간단한 코드를 아래에서 살펴보세요. def keyPressEvent(self, e): if e.key() == QtCore.Qt.Key_Escape: self.close() if e.key() == QtCore.Qt.Key_F11: if self.isMaximized(): self.showNormal() else: self.showMaximized() 이 예제 코드는 아래 글에서 가져왔습니다. stackoverflow.com/questions/14726296/how-to..
IT/파이썬 2021. 2. 1.
파이썬 Qt Designer 에서 Layout stretch 옵션 값 설정
Vertical layout 이나 Horizontal Layout 을 놓고 레이아웃을 설정하다 보면 LayoutStretch 라는 속성을 설정하도록 되어 있다. 의미가 무엇인지? 간략하게 설명해 주는 곳이 없어 간단하게 기록해 둔다. 예제에 숫자로 1,2 로 적어 뒀다. 물론 여기에 적용된 Layout 은 수평으로 2개 있는 프레임의 형태이다. 숫자의 의미는 아래 그림처럼 비율로 보면 되겠다. 초기 비율로 잡아주고, 창이 커지거나 작아지더라도 해당 비율로 움직이는 듯 하다. 간단하게 정리 끝. BJ.
IT/파이썬 2021. 1. 28.
파이썬 리소스 파일 py 파일로 변환하기 - pyside2 rcc
qrc 파일이라고, 프로젝트에 쓰이는 아이콘 파일들의 정보를 저장하는 파일이 있다. 형태는 대략 아래와 같다. (실제 파일은 프로젝트 폴더 밑에 icons 폴더 아래에 두면 되겠죠? :) ) icons/play.png icons/pause.png icons/stop.png 이를 python code에서 불러 쓰기 위해 uic 로 ui 파일 변환해서 쓰듯이 rcc 로 리소스 파일을 py code 로 변환해서 사용해야 한다. (pyside2를 사용하고 있으므로 rcc 명령이름은 pyside2-rcc 네요.) pyside2-rcc icons.qrc -o rc_icons.py 그리고 사용할 파이썬 코드 위에 import 해서 사용하면 된다. import rc_icons stopIcon = QIcon(QPixma..
IT/파이썬 2021. 1. 27.
파이썬 Qt Designer 로 원 모양 진행바 만들어보기
QFrame 배경에 원모양의 색깔이 진행처럼 보이게 배경 프레임을 하나 만들어야 한다. 이걸 위해서 qconicalgradient() style 을 이용하는데, 간단하게 나중에 기억나도록만 요점 정리 일단 유튜브 보고 따라 해보니 아래와 같은 스타일 코드가 나오게 된다. 일단 전체 프레임 하나 놓고, 사이즈는 220 으로 하고 안에 또 프레임 하나 더 놓고, 사이즈는 200 으로 해서 가운데 둔다. 사이즈가 중요하다. 둥근 원으로 보이게 하려면 이 사이즈의 반 사이즈로 border-radius 를 적어두면 된다. 아래 예제는 100으로 하면 된다. QFrame { border-radius:100px; background-color: qconicalgradient(cx:0.5, cy:0.5, angle:9..