PyQt57 QTableWidget 실행취소&다시실행 구현하기 TableWidget은 Qt기반의 스프레드 시트입니다. 다만 정말 기본적인 표 기능만 하기 때문에 세부적인 작동은 직접 정의해주어야 합니다. 이번 포스팅에서는 엑셀처럼 실행취소&다시실행(이하 undo&redo) 기능을 구현해보고자 합니다. undo와 redo를 구현하기 위해서는 우선 큐의 개념을 알아둘 필요가 있습니다. 간단하게 큐는 데이터를 순서대로 저장하고, 빼오는 것을 말합니다. 구현하기 위한 조건을 정리해봅시다. 1. 내용이 수정될 때마다 수정되기 전 데이터를 순서대로 undo큐에 저장합니다. undo가 요청되면 현 상태를 redo큐에 저장합니다. 가장 최근에 저장된 순서로 undo큐에서 데이터를 꺼내옵니다. 2. redo가 요청되면 다시 현 상태를 undo큐에 저장하고, 가장 최근에 저장된 순서.. 2022. 5. 30. QSplitter 다루기 splitter는 경계를 사용자가 직접 움직이게 할 수 있게 만들어준다. import sys from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QFrame, QSplitter from PyQt5.QtCore import Qt class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout() topleft = QFrame() topleft.setFrameShape(QFrame.StyledPanel) topright = QFrame() topright.setFrameShape(QFrame.Panel) bott.. 2022. 5. 16. 사진에 바운딩박스 그리기 CV 영상인식 기술을 적용하기 위해 바운딩박스를 그리다가 어느순간 내가 이걸 왜 하고 있지? 싶더라 노가다도 이런 노가다가 없는데 좀 더 편리하게 하기 위한 프로그램을 개발중이다. 일단 PyQt5를 이용해서 직접 바운딩박스를 그릴 수 있도록 적용해볼까 한다. 우선 세팅부터하자. import sys import cv2 from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * class MyApp(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('EasyBoxer') # 툴 제목 .. 2022. 3. 28. PyQt5를 이용하여 동영상 플레이어를 만들어보자(4) 이전 포스팅 https://tripleler.tistory.com/6 PyQt5를 이용하여 동영상 플레이어를 만들어보자(3) 이전포스팅 https://tripleler.tistory.com/5?category=1015667 PyQt5를 이용하여 동영상 플레이어를 만들어보자(2) 프로그래밍에서 중요한 것은 쓰레딩이다. 쓰레딩을 간단히 설명하자면 일반적으로 파이썬 코 tripleler.tistory.com 이제 마지막으로 동영상프레임 슬라이더 하나만 더 구현하면 어엿한 동영상 프로그램이 된다. 마지막인 만큼 코드도 많이 복잡하다. 우선 코드부터 공개한다. 이전포스팅과 마찬가지로 코드복사는 금지이다. import sys from PyQt5.QtWidgets import * from PyQt5.QtGui imp.. 2022. 1. 10. PyQt5를 이용하여 동영상 플레이어를 만들어보자(3) 이전포스팅 https://tripleler.tistory.com/5?category=1015667 PyQt5를 이용하여 동영상 플레이어를 만들어보자(2) 프로그래밍에서 중요한 것은 쓰레딩이다. 쓰레딩을 간단히 설명하자면 일반적으로 파이썬 코드는 코드의 짜임 순서대로 처리한다. 따라서 동영상 플레이어같은 프로그램을 만들 때 쓰레드를 tripleler.tistory.com 무릇 동영상 플레이어라면 재생/정지가 가능하고 속도를 스스로 조절할 수 있어야 한다. 이번 포스팅에서는 이 두가지 핵심기능을 구현해 보고자 한다, 앞의 두 포스팅은 코드 복사를 허용해놨지만 이번 포스팅의 경우는 공부를 위해서라도 복사를 금지해뒀음을 참고할 것! 우선 코드부터 보자! import sys from PyQt5.QtWidgets .. 2022. 1. 8. PyQt5를 이용하여 동영상 플레이어를 만들어보자(2) 프로그래밍에서 중요한 것은 쓰레딩이다. 쓰레딩을 간단히 설명하자면 일반적으로 파이썬 코드는 코드의 짜임 순서대로 처리한다. 따라서 동영상 플레이어같은 프로그램을 만들 때 쓰레드를 사용하지 않는다면 동영상이 돌아가는 동안 어떠한 버튼 조작도 불가능하다는 소리이다. 왜냐하면 동영상을 처리중이니까. 현재 동영상을 보여주는 행동이 끝나야 다음 처리가 진행된다. 동영상은 동영상대로 버튼은 버튼대로 각각 돌아가야 하도록 도와주는 것이 쓰레드이다. 이건 이거대로 저건 저거대로 따로따로 일을 분할 해서 줘버리는 것이다. 이전 글(동영상 플레이어를 만들어보자(1)) 과 OpenCV 기초 블로그를 참조하여 다음 쓰레드를 구현하였다. https://tripleler.tistory.com/3 PyQt5를 이용하여 동영상 플레.. 2022. 1. 8. PyQt5를 이용하여 동영상 플레이어를 만들어보자(1) 이 블로그의 포스팅은 기본적인 PyQt5에 대해 알고 있다고 가정한다. 이 블로그의 포스팅은 기본적인 파이썬 라이브러리에 대해 알고 있다고 가정한다. 파이썬 툴로는 파이참(PyCharm)을 사용한다. PyQt5란?? PyQt5는 Qt5 어플리케이션 프레임워크에 대한 파이썬 버전입니다. Qt는 플랫폼에 관계없이 다양한 기능을 포함하는 C++ 라이브러리이자 개발툴입니다. PyQt5는 이러한 1000여 개의 클래스들을 포함하는 파이썬 모듈의 모음입니다. PyQt5는 윈도우, 리눅스, macOS, 안드로이드, iOS를 지원합니다. PyQt5의 홈페이지(https://www.riverbankcomputing.com/software/pyqt/intro)에서 최신의 그리고 안정적인 버전의 PyQt5와 최신 버전의 문.. 2022. 1. 6. 이전 1 다음