임베디드/Qt for python

[Qt] GUI with Qt : Text Editor, Qt Designer, Qt API

KimuGamJa 2024. 5. 13. 02:42

 

Text Editor

 

▶파일 시스템 탐색기 열기

 

QFileDialog.getOpenFileName()

        #파일 열기 후 파일 경로를 path에 저장
        path = QFileDialog.getOpenFileName(self, "Open File")[0]copy
  • 기능 : 파일 시스템 탐색기를 연다
  • 입력값 : 다음의 값들이 선택사항으로 전달된다 (필수 x)
    • parent (선택 사항): 파일 대화 상자의 부모 위젯
    • caption (선택 사항): 파일 대화 상자의 제목지정
    • directory (선택 사항): 파일 대화 상자가 열리는 기본 디렉토리의 경로를 지정.
    • filter (선택 사항): 보여지는 파일 필터지정 (파일 형식 등...)
    • initialFilter (선택 사항): 대화 상자가 열릴 때 선택된 파일 필터 지정
    • options (선택 사항): 파일 대화 상자의 옵션 지정.
      (예를 들어, QFileDialog.DontUseNativeDialog 옵션을 사용하면 네이티브 파일 대화 상자를 사용하지 않도록 설정할 수 있다.)
  • 반환값 :  사용자가 선택한 파일의 경로, 모든 파일들을 반환
    • [0] : 파일 경로
    • [1] : 모든 파일들

 

 

▶ 파일 저장 경로, 이름 선택하기

 

TextEdit객체.QFileDialog.getSaveFileName(text)

        path = QFileDialog.getSaveFileName(self, "Save As")[0]
        if path:
            #파일 경로를 self.path에 저장
            self.path = path
            #save() 호출
            self.save()copy
  • 기능 : 파일 대화 상자를 열고 사용자에게 파일을 저장할 위치와 파일 이름을 선택하도록 한다.
  • 입력값 : 다음의 값들이 선택으로 들어간다.
    • parent (선택 사항): 파일 대화 상자의 부모 위젯 
    • caption (선택 사항): 파일 대화 상자의 제목지정 => 여기서는 "Save As"로 설정
    • directory (선택 사항): 파일 대화 상자가 열리는 기본 디렉토리의 경로를 지정.
    • filter (선택 사항): 보여지는 파일 필터지정 (파일 형식 등...)
    • initialFilter (선택 사항): 대화 상자가 열릴 때 선택된 파일 필터 지정
    • options (선택 사항): 파일 대화 상자의 옵션 지정.
  • 반환값 : 사용자가 선택한 파일의 경로와 파일 이름을 포함하는 튜플을 반환. 
    • [0] : 파일 경로
    • [1] : 파일 이름

 

 

 

 

▶ 사용자가 선택한 파일을 읽고 QTextEdit 위젯에 띄우기

 

TextEdit객체.setPlainText(text)

self.edit = QPlainTextEdit()
```
self.edit.setPlainText(open(self.path).read())copy
  • 기능 : QTextEdit 위젯에 있는 텍스트를 변경하거나 새로운 텍스트를 설정
  • 입력값 : 설정할 텍스트
  • 반환값 : None

 

 

▶ QTextEdit 위젯에 작성된 text 받아오기

 

TextEdit객체.toPlainText(text)

f.write(self.edit.toPlainText())copy
  • 반환값 : 해당 TextEdit 객체에 작성된 text를 반환한다.

 

 

 

▶ 파일 open

 

with A as B :

  • 기능 : 파일 스트림을 다루는 기능
    • open 성공시 : 실행문 수행
    • open 실패시 : file close 해준다.

 

 

▶ 파일 덮어쓰기

파일.write(text)

f.write(self.edit.toPlainText())copy
  • 기능 : 파일 text를 덮어쓴다.
  • 입력값 : 파일에 작성할 text
    • self.edit.toPlainText() : QTextEdit 위젯의 현재 텍스트를 가져오는 함수. 즉, edit위젯에 저장된 텍스트를 파일에 write한다.

 

 

▶ 파일 수정여부 확인

 

TextEdit위젯.isModified()

self.edit.document().isModified()copy
  • 기능 :QTextEdit 위젯이 수정되었는지 여부를 확인
  • 입력값 : 없음
  • 반환값 : QTextEdit 위젯이 수정되었으면 True를 반환하고, 그렇지 않으면 False를 반환

 

 

 


 

 

Qt Designer
파이썬 터미널 창에서 uic 파일변환 : .ui 파일을 .py 파일로 변환
.\venv\Scripts\pyside6-uic.exe .\[변환할.ui파일] -o .\[변환후.py파일명]

 

 

 

 


 

Qt API

 

 

레이블의 크기 조절
  • adjustSize() : widget의 크기를 텍스트의 길이로 맞춰준다.
  • .width() : 너비
  • .height() : 높이

 

레이블 이동하기
  • move(x,y) : widget 이동

 

 

사용자의 마우스 클릭에 호출되는 API

 

mousePressEvent(self, event)

 

  • 기능 : 미리 정의된 API, mouse 클릭 시 자동으로 호출된다.
  • event : 마우스 클릭 시 정보 담고 있다.
    • event.x(), event.y() : 마우스의 x,y좌표 정보
    • *사용 시 warning 발생 (언젠가 새로운 API로 대체된다는 경고이지만 무시하자)

 

 

 colorDialog 창

 

QColorDialog.getColor().name()

 

  • 기능 : QColorDialog 창을 띄운다.
  • 반환값 : ser가 색상을 선택하면 선택한 색의 이름을 return

 

 

입력 메시지창을 띄워 User로부터 메시지를 입력 받기

 

QInputDialog.getText(pos, “Dialog제목”, “Dialog 메시지”)

 

  • 기능 : 입력 메시지창을 띄운다.
  • 반환값 : user가 메시지 창에 입력한 값

 

 

Qt Timer
  • QtCore 패키지 import 필수 
    • from PySide6.QtCore import *
  • QBasicTimer() : Timer 객체 생성
  • 객체.start(ms, self) : Timer 시작, interval 단위 ms, timerEvent 호출
  • 객체.stop() : Timer 종료
  • timerEvent(self, event) : Timer 가 동작할 때마다 호출되는 함수
    • 이름 변경 불가
    • 재정의 해서 사용
    • event 인자는 함수를 호출한 Timer 객체에 대한 정보를 가지고 있다.
      => event.timerId()를 통해 timerEvent를 발생시킨 timer 식별 가능!

 

time
  • time() : 1970년 1월1일 ~ 지금까지 흐른 시간 s로 return