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의 강력한 기능을 활용하여 사용자에게 더 나은 경험을 제공할 수 있습니다. 이 기능을 프로젝트에 추가해보세요!