PyQt4 자주 사용되는 위젯

1. 자주 사용되는 위젯

GUI 프로그램에서 자주 사용되는 위젯들을 몇가지 살펴보자. 위젯은 클래스로 되어 있으며, 위젯 클래스마다 서로 다른 메서드와 이벤트들을 제공한다.

2. QLineEdit 위젯

QLineEdit 은 한 라인을 편집할 수 텍스트박스 위젯이며, 복수 라인을 편집하기 위해서는 QTextEdit을 사용한다. 몇가지 자주 사용되는 메서드로는 텍스트를 쓰는 setText(), 현재 텍스트를 읽는 text() 메서드, Watermark 텍스트를 표시하는 setPlaceholderText(), 에디트 내의 텍스트를 모두 선택하는 selectAll(), 읽기 전용 에디트로 만드는 setReadOnly(), 주로 암호 스타일의 에디트에 많이 사용되는 setEchoMode() 등을 들 수 있다.

ed = QLineEdit()

ed.setText("홍길동")  #텍스트 쓰기
text = ed.text()    #텍스트 읽기

# Watermark로 텍스트 표시
ed.setPlaceholderText("이름을 입력하시오") 

# 텍스트 모두 선택
ed.selectAll()

# 에디트는 읽기 전용으로
ed.setReadOnly(True)

# Password 스타일 에디트
e.setEchoMode(QLineEdit.Password)

2. QLabel 위젯

QLabel은 텍스트나 이미지, 혹은 동영상을 표시하는데 사용된다. QLabel에서 자주 사용되는 메서드로는 레이블에 텍스트를 쓰는 setText(), 현재 레이블을 읽는 text() 메서드가 있는데, 특히 setText()에서는 Plain 텍스트 뿐만 아니라 HTML을 사용할 수 있다. 예를 들어, 굵은 문자체로 만들기 위해 아래 처럼 HTML <b> 태그를 사용할 수 있다.

label = QLabel()

# 레이블에 텍스트 쓰기
label.setText("Normal") 
label.setText("Bold") 

# 레이블에 텍스트 쓰기
s = label.text()

3. QCheckBox 위젯

QCheckBox은 체크박스를 위한 위젯으로 자주 사용되는 메서드로는 체크박스를 체크하거나 체크를 지우는 setChecked(), 현재 체크되어 있는지를 검사하는 isChecked() 등이 있으며, 체크 상태가 변함에 따라 적절한 핸들링 코드를 넣을 수 있는 stateChanged 이벤트가 있다.

chk = QCheckBox()

# 체크하기
chk.setChecked(True) 

# 체크지우기
chk.setChecked(False) 

# 체크 상태 검사
checked = chk.isChecked()

# stateChanged 이벤트
chk.stateChanged.connect(self.checkChanged)

4. QComboBox 위젯

QComboBox는 콤보박스를 위한 위젯으로 자주 사용되는 메서드로는 콤보박스에 하나의 아이템을 넣는 addItem(), 복수 컬렉션을 한꺼번에 아이템으로 넣는 addItems(), 현재 선택된 아이템의 인덱스를 리턴하는 currentIndex(), 현재 선택된 아이템의 텍스트를 리턴하는 currentText() 등이 있으며, 자주 사용되는 이벤트로는 아이템 선택이 변경되면 발생하는 currentIndexChanged 이벤트가 있다.

cbo = QComboBox()

# 콤보박스에 아이템 하나씩 넣기
cbo.addItem("Apple")
cbo.addItem("Banana")
cbo.addItem("Grape")

# 콤보박스에 아이템 리스트 넣기
cbo.addItems(['Apple','Banana','Grape'])

# currentIndexChanged 이벤트 핸들러
self.cbo.currentIndexChanged.connect(self.selectionChanged)

def selectionChanged(self):
    txt = self.cbo.currentText()
    idx = self.cbo.currentIndex()
    # 생략...
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.