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 과 비슷하지만 두 개의 컬럼만 있는 레이아웃이다
- 자주 사용하는 위젯(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 |