콘텐츠로 건너뛰기
» PyQt 윈도우를 최상단에 고정하는 방법 (토글 버튼 포함)

PyQt 윈도우를 최상단에 고정하는 방법 (토글 버튼 포함)

PyQt에서 윈도우를 화면 최상단에 고정하려면 setWindowFlags 메서드를 사용하여 해당 윈도우를 항상 최상단에 있도록 설정할 수 있습니다. 이를 위해 Qt.WindowStaysOnTopHint 플래그를 사용합니다. 이 포스트에서는 Flag를 토글할 수 있는 프로그램을 만들어 볼테니 단계별로 설명하니 따라해보세요!

1. 기본 윈도우 설정

아래는 기본적인 PyQt 윈도우 설정 코드입니다. 이 코드를 바탕으로 최상단 고정 기능을 추가하겠습니다.

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Always on Top Example")
        self.setGeometry(100, 100, 400, 200)

        self.always_on_top = False

        # 메인 레이아웃 설정
        main_layout = QVBoxLayout()

        # 토글 버튼 생성
        self.toggle_button = QPushButton("Toggle Always on Top")
        self.toggle_button.clicked.connect(self.toggle_always_on_top)

        main_layout.addWidget(self.toggle_button)

        # 중앙 위젯 설정
        container = QWidget()
        container.setLayout(main_layout)
        self.setCentralWidget(container)

    def toggle_always_on_top(self):
        if self.always_on_top:
            self.setWindowFlags(self.windowFlags() & ~Qt.WindowStaysOnTopHint)
        else:
            self.setWindowFlags(self.windowFlags() | Qt.WindowStaysOnTopHint)

        self.always_on_top = not self.always_on_top
        self.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

2. 코드 설명

  • 초기화 및 기본 설정: QMainWindow를 상속받아 윈도우를 설정합니다. 기본 창 제목과 크기를 설정합니다.
  • 토글 버튼 추가: QPushButton을 사용하여 토글 버튼을 추가하고, 클릭 시 toggle_always_on_top 메서드가 실행되도록 연결합니다.
  • 토글 메서드 구현
  • toggle_always_on_top 메서드는 현재 always_on_top 플래그를 확인하여 윈도우의 최상단 고정 상태를 변경합니다.
  • setWindowFlags 메서드를 사용하여 Qt.WindowStaysOnTopHint 플래그를 추가하거나 제거합니다.
  • 플래그 변경 후 show 메서드를 호출하여 변경 사항을 적용합니다.

3. 실행 방법

위 코드를 실행하면, “Toggle Always on Top” 버튼이 있는 윈도우가 나타납니다. 버튼을 클릭할 때마다 윈도우가 최상단에 고정되거나 해제됩니다. 이를 통해 사용자는 필요에 따라 윈도우의 최상단 고정 상태를 쉽게 조절할 수 있습니다.

결론

이번 포스트에서는 PyQt로 만든 윈도우를 최상단에 고정하고 이를 토글할 수 있는 기능을 구현해보았습니다. PyQt의 강력한 기능을 활용하여 사용자에게 더 나은 경험을 제공할 수 있습니다. 이 기능을 프로젝트에 추가해보세요!