Study/IDA

[PyQt4] Example

대장흰둥 2021. 3. 28. 14:58

IDA 플러그인 작성을 위해선 PyQt도 꼭 필요합니다. 

저는 조사당시 Python 2.7을 사용하고 있어서 PyQt4를 기준으로 문서를 작성하였습니다.

 

1. 위젯 사용하기 

from PyQt4.QtGui import *

class MyDialog(QDialog):
    def __init__(self):
        QDialog.__init__(self)

        lblName = QLabel("Name")
        editName = QLineEdit()
        btnOk = QPushButton("OK")

        layout = QVBoxLayout()
        layout.addWidget(lblName)
        layout.addWidget(editName)
        layout.addWidget(btnOk)

        self.setLayout(layout)

app = QApplication([])
dialog = MyDialog()
dialog.show()
app.exec_()

코드 실행 화면

Pyqt 5 에서는 QtWidgets 모듈에 포함되어있음

  • QLable(“레이블 텍스트”) : 레이블에 사용할 텍스트 지정
  • QLineEdit() : 단일 라인 텍스트박스 생성
  • QPushButton(“버튼 텍스트”) : 버튼에 표시될 텍스트 지정

- 레이아웃에 넣어 정렬

     QVBoxLayout : 위젯들을 수직으로 배치

     QHBoxLayout : 위젯들을 수평으로 배치

     QGridLayout : 격자 형태의 UI 구성,  행과 열로 구성되어있다

     addWidget(위젯 이름, row, column, rowspan, colspan)

     QFormLayout : QGridLayout 과 비슷하지만 두 개의 컬럼만 있는 레이아웃이다

QGridLayout 예제

- 자주 사용하는 위젯(QtWidgets 모듈에 포함되어있다.)

QLabel 텍스트 레이블 표시, 이미지나 동영상도 가능
QLineEdit 한줄 텍스트박스
QTextEdit 멀티라인 텍스트박스
Qcheckbox 체크박스
QPushButton 버튼
QRadioButton 옵션버튼
QListBox 리스트박스
QComboBox 콤보박스
QSlider 슬라이스 바
QMenu 메뉴 클래스

 

2. 자기소개서 만들어보기

#-*- coding: utf-8 -*-
#-*- coding: euc-kr -*-
from PyQt4.QtGui import *
from PyQt4.QtCore import *
#5도 동일하게 QtCore

class MyDialog(QDialog):
    def __init__(self):
        QDialog.__init__(self)

        Title = QLabel(unicode("솔직하게 작성해 주세요",'utf-8'))
        ID = QLabel("ID")
        IDText = QLineEdit()
        Gender = QLabel(unicode("성별", 'utf-8'))
        GenderGroupBox = QGroupBox()
        Men = QRadioButton(unicode("남자", 'utf-8')) 
        Women = QRadioButton(unicode("여자", 'utf-8'))
        Age = QLabel(unicode("나이", 'utf-8'))
        age = QComboBox()
        age.addItems(["22", "23", "24", "25", "26"])
        Capa = QLabel(unicode("주량", 'utf-8'))
        capa = QSlider(Qt.Horizontal)
        capa.setMinimum(0)
        capa.setMaximum(4)
        capa.setValue(2)
        capa.setTickPosition(QSlider.TicksBelow)
        capa.setTickInterval(1)
        Text = QLabel(unicode("자기소개","utf-8"))
        test = QTextEdit()
        Ok = QPushButton("Submit")

        layout = QGridLayout()
        layout.addWidget(Title, 0, 0,)
        layout.addWidget(ID, 1, 0)
        layout.addWidget(IDText, 1, 1, 1, 2)
        layout.addWidget(Gender, 2, 0)
        layout.addWidget(GenderGroupBox, 2, 1, 1, 2)
        layout.addWidget(Men, 2, 1)
        layout.addWidget(Women, 2, 2)
        layout.addWidget(Age, 3, 0)
        layout.addWidget(age, 3, 1, 1, 2)
        layout.addWidget(Capa, 4, 0)
        layout.addWidget(capa, 4, 1, 1, 2)
        layout.addWidget(Text, 5, 0, 1, 3)
        layout.addWidget(test, 6, 1)
        layout.addWidget(Ok, 7, 1)



        self.setLayout(layout)

app = QApplication([])
dialog = MyDialog()
dialog.setWindowTitle(unicode("자기소개서",'utf-8'))
dialog.show()
app.exec_()

 

- QGroupBox() : 선택 옵션 주위에 테두리를 설정해 준다

- QCombobox() : 여러 옵션 중 하나를 선택할 수 있게 한다

옵션의 추가 방법 : addItem(옵션), addItems([옵션1, 옵션2, 옵션3, …])

- QSlider(방향) :  슬라이드를 만들어 준다

  방향 설정 : Qt.Horizomtal(가로), Qt.Vertical(세로)

  범위 설정 : set.Minimum(숫자), set.Maximum(숫자)

  슬라이드 간격 설정(보이게) : setTickPosition(Qslider.TicksBelow), setTickInterval(원하는 간격) 을 둘다 써준다

'Study > IDA' 카테고리의 다른 글

IDA 간단한 팝업창 만들기  (0) 2021.03.22
IDA Python Plugin  (0) 2021.03.11
IDAPython API 정리 2  (0) 2021.01.19
IDAPython API 정리  (0) 2021.01.12