PyQt 메인윈도우

메인 윈도우

PyQt에서 메인윈도우는 QMainWindow 클래스로 표현되는데, 메인 메뉴 및 툴바, 그리고 하단에 상태바 등을 갖는 윈도우이다. 단순히 GUI 프로그램은 다이얼로그를 사용할 수 있겠지만, 많은 복잡한 GUI 프로그램은 종종 메인윈도우를 사용한다.

메인 윈도우를 사용하기 위해서는 QMainWindow 클래스로부터 파생된 서브클래스를 만들며, 그 생성자에 위젯 컨트롤들을 배치하게 된다. 아래 예제에서 MyWindow 는 QMainWindow로부터 파생된 사용자 정의 메인 윈도우 클래스이며, 그 생성자에 버튼 2개를 추가하고 있다.

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class MyWindow(QMainWindow):
    def __init__(self):
        MyWindow.__init__(self)

        # 윈도우 특성 설정
        self.setWindowTitle('내 윈도우')      # 윈도우 타이클 지정
        self.setGeometry(600, 600, 400, 400)  # 윈도우 위치/크기 설정
        self.setWindowIcon(QIcon('umbrella.png')) # 아이콘 지정
        self.statusBar().showMessage('준비')

        # 버튼1 추가
        btn1 = QPushButton('메시지 버튼', self)
        btn1.setToolTip('이 버튼을 누르면 메시지 박스가 나옴')
        btn1.resize(btn.sizeHint())
        btn1.move(50, 50)
        btn1.clicked.connect(self.btnClicked)

        # 종료 버튼 추가
        btnQuit = QPushButton('종료', self)
        btnQuit.move(50, 100)
        btnQuit.clicked.connect(QCoreApplication.instance().quit)

        # 윈도우 화면에 표시
        self.show()

    def btnClicked(self):
        QMessageBox.information(self, "버튼", "버튼 클릭!")

def main():
    app = QApplication(sys.argv)
    ex = MyWindow()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

MyWindow 생성자의 첫 부분은 윈도우 혹은 폼의 속성을 설정하는 코드들이다. setWindowTitle() 메서드는 윈도우 타이틀을 지정하는 것이고, setGeometry() 메서드는 윈도우의 위치 및 크기를 지정하는 것이다. setWindowIcon()는 윈도우 좌측 상단에 폼 아이콘을 설정하는 것이며, statusBar()는 윈도우 하단의 상태바를 참조할 때 사용한다.

예제에서 윈도우 특성 설정 후에 두 개의 버튼을 추가하는데, 첫째는 "메시지 버튼" 이라고 쓰인 버튼으로 btnClicked 라는 이벤트 핸들러와 연결되어 있음을 알 수 있다. 두번째 버튼은 종료 버튼으로 이는 PyQt에서 제공하는 quit 메서드를 호출하여 프로그램을 종료하게 한다.

본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.