일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- kotlin
- TableView
- UITableView
- 어플리케이션
- button
- Python
- Chart
- 개발자
- 개발
- Android
- alamofire
- ui
- graph
- 라이브러리
- modal
- Apple
- androidstudio
- Xcode
- cocoapods
- UIKit
- Chrats
- UIButton
- Storyboard
- 그래프
- Swift
- library
- charts
- ios
- PyQt
- PyQt5
- Today
- Total
목록전체 글 (316)
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:hover와 같이 뒤에 hover를 붙이면 상황에 따라서 다른 디자인을 적용할 수 있다. 마찬가지로 pressed를 추가하면 눌렀을 때 상황도 스타일이 변경된다. 그건 다음 글에서
QPushButton{ border-color: rgb(255, 200, 28); border-style : solid; border-width : 10px } 'border-style : 종류;' 테두리 스타일 설정
QPushButton{ border-color: rgb(255, 134, 28); border-style : solid; border-width : 1px } 'border-width : 1px' 테두리 두께를 설정 가능
QPushButton{ border-color: rgb(255, 200, 28); border-style : solid; border-width : 5px } border-color: rgb(255, 200, 28);, border-color: #FFFFFF; 두 방법으로 테두리 색 지정 가능
QPushButton { color: rgb(255, 211, 76); } 'color'를 사용하면 내용색을 변경할 수 있다.
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() 라인 에디트 텍스트 받아오기 self.[라인에디트 이름].setText(넣을 내용 str만 가능) 라인 에디트 텍스트 변경하기 계산기 예시 # 버튼 클릭 메서드 정의 self.pushButton_2.clicked.connect(self.sum) self.pushButton_3.clicked.connect(self.reset) def sum(self): # 라인 에디트에서 수를 받아옴 a = self.lineEdit.text() b = self.lineEdit_2.text() # 더하기 진행 int 형식으로 변환 필요 sum_result = int(a) + int(b) # 레이블에 출력 self.label.setText(str(sum_result)) def rese..
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을 만들어 안에 다른 위젯들을 배치하면 된다. 사용법은 따로 없고 어떻게 어디서 구역을 나누어주는지 익숙해지는 노력이 더 필요하다.
위가 원래 UIProgressView 아래가 라이브러리 적용 Smitters/GradientProgress: A gradient progress bar (UIProgressView). (github.com) GitHub - Smitters/GradientProgress: A gradient progress bar (UIProgressView). A gradient progress bar (UIProgressView). Contribute to Smitters/GradientProgress development by creating an account on GitHub. github.com 팟 설치 pod 'GradientProgress' 사용법 사용을 원하는 프로그래스바를 배치. 비교용으로 두 개를 설치..
개요 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 ..
기존에 벨로그에 작성한 글을 옮김. PyQt(PySide)를 공부하면서 배운 정보나 기술을 정리하기 위해서 글을 작성하기 때문에 알고리즘, 글 내용이 부족할 수 있다. 이론 적인 부분은 참고만 하고 PyQt가 어떻게 사용 가능한지 보는 정도로 읽어주시면 감사합니다. 잘못된 정보는 바로 댓글로... 3줄 요약 1. VSC 설치하기 2. Anaconda 설치하기 3. PyQt 설치하기 주의 - 틀린 내용이 있을 수 있습니다. - 사용한 위주로 정리되었습니다. - 개인적인 용도로 필력 수준이 떨어지고 남들이 보기 불편합니다. - 코드가 정리되지 못하고 긴게 많습니다. - 더 좋은 방법은 많습니다. - 더 좋은 자료 많습니다. 1. PyQt 더보기 작성일자 2021-06-28 작성자 : 김지태 참고 1 : ht..
Swift UIColor Picker (ralfebert.com) Swift UIColor Picker www.ralfebert.com 위에 보이는 값들을 사용해서 Swift에서 사용 가능한 UIColor로 변환해줍니다. 아래 코드 블록은 변환된 결과 예시입니다. 보시는 것과 같이 다양한 방법으로 제공해줍니다. #colorLiteral(red: 1, green: 0.8, blue: 0, alpha: 1) /* #ffcc00 */ UIColor(hue: 0.1333, saturation: 1, brightness: 1, alpha: 1.0) /* #ffcc00 */ UIColor(hue: 48/360, saturation: 100/100, brightness: 100/100, alpha: 1.0) /* #..
오늘은 위와 같이 좌우로 움직이는 CollectionView를 만들어보려고 합니다. 평소에 저는 이 방법을 검색할 때 Horizontal Card View 이런 식으로 찾았습니다. 하지만 어느 날 우리 빛과 같은 종권님 블로그에서 Carousel이라는 단어로 글로 올리신 걸 보고 찾아봤습니다. 왼쪽이 Carousel 결과이고 오른쪽이 horizontal card view입니다. 확실히 검색어에 따라서 원하는 정보량이 달라지긴 하네요. 이렇게 용어를 하나 배웠습니다. 하지만 오늘은 종권님 블로그에 작성된 내용을 이용해서 진행해보려고 합니다. [iOS - swift] 1. 스크롤 영역을 암시해주는 Carousel 구현 방법 (UICollectionView, 수평 스크롤 뷰, paging 구현) (tistor..
iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해 대시보드 - 인프런 | 강의 (inflearn.com) iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션 동시성(Concurrency)프로그래밍 - iOS프로그래밍에서 필요한 동기, 비동기의 개념 및 그를 확장한 GCD 및 Operation에 관한 모든 내용을 다룹니다., - 강의 소개 | 인프런... www.inflearn.com 나는 비동기 처리를 어느 정도 할 수 있다고 생각했다. 가끔 미디엄이나 티스토리에서 보이는 괜찮은 처리법들이 있지만 기존 사용하던 방법이 편하고 내가 작성하는 것보다..