일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- TableView
- charts
- Swift
- modal
- 개발
- Storyboard
- button
- alamofire
- androidstudio
- PyQt5
- Xcode
- Android
- Chrats
- Apple
- kotlin
- library
- 그래프
- Python
- UITableView
- cocoapods
- 어플리케이션
- ui
- Chart
- 라이브러리
- 개발자
- graph
- UIButton
- ios
- UIKit
- PyQt
- Today
- Total
목록개발 (21)
Jiwift
QPushButton{ border-color: rgb(255, 200, 28); border-style : solid; border-width : 5px; border-radius : 30px; } QPushButton:hover{ background-color : rgb(200, 255, 30); border-color : rgb(255, 200, 28); border-style : solid; border-width : 5px; border-radius : 30px; } QPushButton:pressed { background-color : rgb(200, 100, 30); border-color : rgb(255, 200, 28); border-style : solid; border-width ..
QPushButton{ border-color: rgb(255, 200, 28); border-style : solid; border-width : 10px } 'border-style : 종류;' 테두리 스타일 설정
QPushButton { background-color: #ffffff; } background-color를 사용하면 배경색을 변경할 수 있습니다. 사진은 버튼을 변경한 예시.
위젯 디자인을 적용할 때, 부모와 자식 위젯간의 연관성을 잘 생각해야합니다. 위 사진은 프레임(부모) 속에 버튼(자식)을 넣은 예시이다. 프레임(부모) 위젯에서 단순하게 'background-color: rgb(255, 156, 158);'를 입력하는 상황. 만약 부모 위젯이 가진 속성을 하위 위젯들도 가지고 있다면 부모와 같은 속성이 하위에게도 모두 적용. 위젯마다 스타일을 주면서 나아가면 괜찮지만 혼선이 생길 수 있으니 사전에 어느 위젯에 적용할지 정의하면서 입력하는 것이 좋다. QFrame { background-color: rgb(147, 120, 255); } QPushButton { background-color: rgb(164, 255, 79); } 이렇게 각각 정의를 해주면 중복 적용이 되..
[Python/PyQt] 스타일(Style) 적용 방법 단순하게 적용 방법만을 다룹니다. 방법은 크게 3가지로 나뉩니다. 방법 1 원하는 위젯에서 우클릭 후 'styleSheet 바꾸기' 선택 원하는 스타일 적용 방법 2 오른쪽 속성 창에서 바로 입력 방법 3 self.[위젯 이름].setStyleSheet( "[위젯 종류] {color: white; background-color: rgb(58, 58, 58);}" "[위젯 종류]:[위젯 상황] { background-color:rgb(10, 10, 10); }" ) 소스 코드로 바로 디자인 적용
위와 같이 Qt Designer에서 설정 가능하다. from PyQt5.QtWidgets import QToolTip from PyQt5.QtGui import QFont self.pushButton.setToolTip("버튼입니다. 버튼22 두꺼운 글씨") QToolTip.setFont(QFont('SansSerif', 30)) 코드도 툴 팁 설정이 가능하다.
# 비활성화 self.[위젯 이름].setDisabled(True) # 활성화 self.[위젯 이름].setEnabled(True)
[Python/PyQt] 프레임과 배경을 없애기 # 배경 없애기 self.setAttribute(Qt.WA_TranslucentBackground) # 이전 글에서 배운 프레임 없애기 self.setWindowFlag(Qt.FramelessWindowHint) show() 이전에 넣으면 없어진다.
[Python/PyQt] 프레임 타이틀 바(Title Bar) 없애기 self.setWindowFlag(Qt.FramelessWindowHint) 타이틀 바를 안 보이게 하는 메서드. 타이틀 바가 없어진다기보다는 프로그램의 프레임이 없어진다. 그래서 윈도우에서 제공하는 기본 기능들을 사용할 수 없다. 닫기, 최소화, 최대화, aero snap 등은 직접 구현해야 한다. 찾으면 구현 법은 나온다.
[Python/PyQt] 위젯(Widget)을 배치할 때 레이아웃을 꼭 적용해야 하는 이유 제목은 어떻게 보면 반은 맞고 반은 아닌 이야기이다. 위젯을 배치하고 레이아웃 설정을 해주면 창의 크기가 변경되어도 그 안에 위젯들은 유연하게 변화가 생긴다. 하지만 창의 크기를 조절할 수 없는 프로그램이라면 필수는 아닐 수 있다고 본다.
from PyQt5.QtWidgets import QMessageBox QMessageBox.information(self, "타이틀입니다.", "안녕하세요. information 메세지 입력입니다.") QMessageBox.about(self, "타이틀입니다.", "안녕하세요. about 메세지 입력입니다.") QMessageBox.warning(self, "타이틀입니다.", "안녕하세요. warning 메세지 입력입니다.") QMessageBox.critical(self, "타이틀입니다.", "안녕하세요. critical 메세지 입력입니다.") QMessageBox.question(self, "타이틀입니다.", "안녕하세요. question 메세지 입력입니다.") 메세지를 표현하는 가장 기본
self.[스택위젯 이름].setCurrentIndex(스택 페이지 번호) 스택 페이지를 입력해주면 간단하게 페이지를 이동할 수 있다.
# 위젯 현재 값 self.[슬라이더, 다이얼 위젯 이름].value() # 위젯이 가질 수 있는 가장 작은 값 self.[슬라이더, 다이얼 위젯 이름].minimum() # 위젯이 가질 수 있는 가장 큰 값 self.[슬라이더, 다이얼 위젯 이름].maximum() # 위젯이 한번 움직이거나 방향키를 눌러 이동할 수 있는 최소한의 값 self.[슬라이더, 다이얼 위젯 이름].singleStep() # 위젯이 빠르게, 크게 움직이다면 이동할 수 있는 값 self.[슬라이더, 다이얼 위젯 이름].pageStep() 슬라이더에 설정된 옵션 값들을 받아온다. 설정 값들은 Qt Designer에서도 설정 가능하다. # 위젯이 움직이면 기능 수행 self.[슬라이더, 다이얼 위젯 이름].sliderMoved.co..
리스트 위젯(Widget)과 뷰(View)가 있는데 위젯이 더 간편한 것 같다. 사용하는 방법은 같으나 편리함 정도 차이가 있다. # 한번 클릭 self.[리스트위젯 이름].itemClicked.connect([기능]) # 더블 클릭 self.[리스트위젯 이름].itemDoubleClicked.connect([기능]) # 항목 변경 self.[리스트위젯 이름].currentItemChanged.connect([기능]) 리스트 위젯 클릭 이벤트를 담당하는 메서드 # 선택된 리스트위젯 아이템 번호 self.[리스트위젯 이름].currentRow() # 선택된 리스트위젯 객체 반환 self.[리스트위젯 이름].currentItem() # row번째 리스트위젯 객체 반환 self.[리스트위젯 이름].item(r..
self.[레이블위젯 이름].text() 텍스트 내용받아오기 str 형식으로 받아옴 self.[레이블위젯 이름].setText(넣을 내용 str만 가능) labe 텍스트 변경 사용 예시 # 버튼 클릭 self.pushButton.clicked.connect(self.one) self.pushButton_2.clicked.connect(self.two) # Label 내용들 변경 def one(self): self.content = self.label.text() def two(self): self.label_2.setText(self.content) one 함수에서 label 텍스트 내용을 가져오고 two 함수에서 label_2로 가저온 내용을 넣는다.
self.[체크박스 이름].stateChanged.connect(기능) 라디오 버튼과 같이 체크박스를 누르면 수행하는 기능을 추가하면 된다. self.[체크박스 이름].isChecked() isChecked()를 사용해서 상태 값을 받아올 수 있다. # 체크 풀기 self.[체크박스위젯 이름].setChecked(False) # 체크 하기 self.[체크박스위젯 이름].setChecked(True) 체크박스는 라디오 버튼과 다르게 다중 선택이 가능. 사용 예시 # 놀이를 고르는 체크 박스 두개 self.checkBox.stateChanged.connect(self.work) self.checkBox_2.stateChanged.connect(self.work) # 음식을 고르는 체크 박스 두개 self.c..
setText(), text()를 통해서 라디오 버튼 텍스트도 읽고 쓰기 가능 라디오버튼은 다중 선택이 불가능합니다. 라디오 버튼 토글 클릭 # 둘다 사용 가능 self.[라디오위젯 이름].toggled.connect(기능) self.[라디오위젯 이름].clicked.connect(기능) 라디오 버튼 자동으로 체크하기 self.[라디오위젯 이름].setChecked(True) 마우스가 아닌 다른 기능 수행중에 코드로 클릭되게 할 수 있음 체크 여부 확인 self.[라디오위젯 이름].isChecked() 체크 여부를 확인하여 if문등 사용 가능 True False로 알려줌
self.[버튼위젯 이름].clicked.connect(기능) 위 메서드를 통해서 버튼이 눌렸을 때 원하는 동작을 수행할 수 있다.
처음에 UI 레이아웃을 작업할 때는 QFrame을 사용하지 않고 진행했다. 하지만 UI가 복잡해지면서 구역별로 묶거나 반복되는 배치를 사용할 때 frame 단위로 관리하는 것이 더 편하다고 느껴지고부터는 계속 frame을 사용했다. html에서 div를 사용하는 것처럼 pyqt에서 frame으로 틀을 잡는 게 관리에서 편리하다. frame 추가 후 각각 레이아웃, 마진, 스페이스 등 구역을 나누어서 레이아웃을 적용하면 더 편리한 개발이 될 것이다. 디자인을 보고 나뉘는 구역 혹은 관리하기 쉬운 구역을 생각해서 frame을 만들어 안에 다른 위젯들을 배치하면 된다. 사용법은 따로 없고 어떻게 어디서 구역을 나누어주는지 익숙해지는 노력이 더 필요하다.
개요 Python으로 작업한 프로그램을 배포하기 위해서는 실행 파일로 만들어야 한다. 다른 사용자에게 주는 것이 아닌 나 혼자 어디서든 사용하기 위해서도 실행 파일로 바꾸는 게 좋다. Python 배포파일을 생성하기 위한 방법은 아래 두 가지 방법이 있다. PyInstaller cx_freeze 이 글에서는 PyInstaller를 다룬다. ※ 읽기 전에 주의 개인적으로 기억하려고 남긴 것. 가독성이 많이 떨어진다. 더 좋은 글들이 많다. PyInstaller 공식 사이트 "PyInstaller는 파이썬 응용 프로그램과 모든 종속성을 단일 패키지로 번들로 묶는다." 공식 사이트 내용을 번역한 것이다. 쉽게 생각해서 프로젝트 작업을 하면서 사용하는 ui, 이미지, 아이콘 등 다 같이 배포하기 쉽게 묶어준다...
[Python/PyQt] PyQt UI 생성 및 연결 | Python GUI 프로그램 원래 작성된 문서를 티스토리로 옮기는 문서입니다. 개요 PyQt란, Qt의 레이아웃에 Python의 코드를 연결하여 GUI 프로그램을 만들 수 있게 도와주는 프레임워크를 말한다. 즉 UI는 PyQt 프레임워크가 Qt 위젯 및 UI를 구현하게 도와주고, 내부 기능을 Python을 이용한다. UI 사용 구조 그림을 제대로 그린 지 모르겠지만 큰 틀로 보면 이렇다... 다음 설명들과 함께 보면 이해 갈 것으로 예상..ㅎ UI 생성 방법 종류 로직은 python으로 구현하고 UI는 PyQt를 사용하는 것은 알겠는데, 어떻게 화면을 구현해??라고 처음에 생각이 들었다. 우선 UI를 구현하는 방법은 두 가지가 있다. python ..