MapleStory Finger Point

Development/GUI 7

Grid Layout 위젯 드래그&드롭 이벤트 생성하기

PyQt 또는 PySide로 GUI를 만들 때 거의 필수적으로 Layout을 사용한다. 안 쓰면 크기가 고정되어 버리기 때문에 GUI 크기 조절 시 불편한 점이 한두 가지가 아니라 무조건 쓰는 편이다. 주로 나는 Grid Layout을 자주 쓰는데 문득 Layout 안에 있는 위젯들의 위치를 바꾸고 싶어서 한번 찾아보았다. 그러다 stackoverflow 찾게 되었다. import warnings warnings.filterwarnings('ignore', category=DeprecationWarning) import sys from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QVBoxLayout, QApplication from PySide6.Q..

Development/GUI 2023.07.12

QSettings 로그인 알고리즘

이 내용은 이전 글과 연관되어 있습니다. 간단한 로그인 알고리즘 중 일정 횟수 비밀번호 에러가 발생하면 해당 계정의 로그인을 일시적으로(필자는 1분으로 설정하였음) 차단하는 기능을 구현해보겠습니다. 우선 크게 필요한 것은 첫 번째로 비밀번호 에러가 발생한 시간, 두 번째는 비밀번호 에러 횟수입니다. 현재 시간과 에러 발생 시간을 비교하여 로그인 성공 유무를 선택하는 알고리즘입니다. 자세한 것은 코드에 주석 처리 해놓았습니다. #!/usr/bin/env python3 # # Authors: # 5jx2oh@gmail.com import sys import time from datetime import datetime from PySide6.QtCore import QSettings from PySide6...

Development/GUI 2023.02.21

PyQt5 이미지 비율 맞추기

기본적으로 Qt에서 이미지를 넣기 위해서 빈 QLabel을 선언한 뒤에 넣어야 한다는 건 다들 알고 있을 것이다. 막상 이미지를 넣어보면 내 생각대로 안 들어가지는 게 한두 번이 아니었다. 그럴 때마다 구글링 하고 '아 이렇게 했었지..' 하며 또 까먹는다. 그래서 그냥 나도 내 머릿속을 정리할 겸 이해하기 쉽게 설명할 거다. 솔직히 아래 그림 보면 끝나긴 한다. 그래도 예제 코드를 만들어 보았다. 귀여운 비둘기 사진으로 테스트해보겠다. 첫 번째 코드 - import os from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import QMainWindow, QLabel from PyQt5.QtCore import Qt class ThumbnailView(QMa..

Development/GUI 2022.06.20

PyQt5 버튼 애니메이션

최근 UI 애니메이션에 대해 관심이 많아졌다. 그중 Qt Creator라는 툴을 발견하게 되었는데, 그동안 내가 했던 UI는 기본 중의 기본이었구나..라고 깨달을 만한 여러 다양하고 멋진 것들이 많았다. 하나씩 둘러보는 중 느낀 점이 있었는데, 중급 또는 고급 UI들은 대부분 QML을 사용하여 제작한다는 것이었다. 무슨 파도 시뮬레이터도 있었고, 자동차 클러스터 같은 여러 재밌는 위젯들이 많았다. 지금까지 PyQt5 내장 위젯들로만 사용해서 별거 없네 생각하다가 신세계를 경험했다.. 또 QML을 공부하기에 막막하던 참에, 구글링하다 기본 툴로 재미난 기능을 적용하는 예제를 발견했다. 바로 버튼에 마우스를 올려둘 시 Gradient를 적용할 수 있다. #!/usr/bin/python3 from PyQt5 ..

Development/GUI 2022.06.15

PyQt5 종료 Fade out 이벤트

라고 제목을 거창하게 적어보았지만 사실은 페이크다. 마음 같아서는 animation 함수 (QPropertyAnimation)를 사용해서 해보고 싶었지만, 그런 마음은 접어두기로 한다. 코드는 아주 간단하다. 이걸 글로 써서 올리기에 창피할 정도 import sys import time from PyQt5.QtWidgets import QWidget, QApplication, QGraphicsOpacityEffect, QPushButton, QVBoxLayout class FadeWindow(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) button = QPushButton(self) button.setText("Clo..

Development/GUI 2021.07.08

PyQt5 메뉴바 클릭 시 텍스트 변경해보기

PyQt5를 공부하면서 메뉴바를 가지고 이리저리 가지고 놀아보았는데, 클릭 시 텍스트가 바뀌면 어떨까 해서 한번 만들어보았다. 이번에는 PyQt5를 더 효율적이고 쉽게 사용할 수 있는 방법 중에 하나인 "Qt Designer"를 사용하여 만들어 보았다. Qt Designer를 처음 쓸 때는 어떻게 적용하는지 애를 먹었는데, 점점 사용법을 익히다 보니 GUI(Graphical User Interface)를 만들 때 이렇게 편할 수가 없다. Designer를 처음 실행하면 다음과 같은 화면이 나오게 되는데, 나는 Main Window를 선택하여 만들었다. Main Window를 선택하고 Create를 누르게 되면, 정품인증하고 싶어요 이제 자유롭게 GUI를 만들 수 있는 화면이 나온다. 내부 윈도우의 상단을..

Development/GUI 2020.09.21