pyside 또는 pyqt로 응용 프로그램을 만들다보면 윈도우 타이틀바에서 닫기 버튼, 최소화 버튼, 최대화 버튼 등을 비활성화시키고 싶은 경우가 있습니다. 참고로 응용 프로그램에서 이런 걸 윈도우(창) 타이틀바라고 부릅니다. 타이틀 바에는 일반적으로 프로그램의 아이콘, 이름, 최소화버튼, 최대화버튼, 닫기버튼 등이 포함되어 있습니다.
닫기 버튼 비활성화
닫기 버튼을 비활성화시키고 싶다면 다음 코드 한 줄을 적절한 위치에 삽입해주면 됩니다.
self.setWindowFlags(Qt.WindowTitleHint | Qt.WindowMinimizeButtonHint | Qt.WindowMaximizeButtonHint)
저는 해당 클래스의 __init__ 함수 내에 삽입해줬습니다. 실행해봤더니 다음과 같이 닫기 버튼이 비활성화되었습니다.
최대화 버튼 비활성화
이번에는 최대화 버튼을 비활성화해보겠습니다. Qt.WindowCloseButtonHint가 추가되고, Qt.WindowMaximizeButtonHint는 빠진 것을 확인하실 수 있습니다.
self.setWindowFlags(Qt.WindowTitleHint | Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint)
최소화 버튼 비활성화
최소화 버튼도 비활성화해볼까요? 이번에는 Qt.WindowMinimizeButtonHint가 빠졌죠?
self.setWindowFlags(Qt.WindowTitleHint | Qt.WindowMaximizeButtonHint | Qt.WindowCloseButtonHint)
위 내용을 잘 응용하면 두 개 이상을 비활성화하는 것도 가능하겠죠?
최소화 버튼과 닫기 버튼 비활성화하기
self.setWindowFlags(Qt.WindowTitleHint | Qt.WindowMaximizeButtonHint)
최소화 버튼과 최대화 버튼 안보이게 하기
self.setWindowFlags(Qt.WindowTitleHint | Qt.WindowCloseButtonHint)
위와 같이 코드를 넣어주니, 이번에는 옅은 회색으로 비활성화되지 않고 아예 버튼들이 보이지 않게 되는군요. 왜 이렇게 되는지 이유는 잘 모르겠지만, 아무튼 이렇게 됩니다. 최소화 또는 최대화 버튼이 하나도 포함되지 않으면 이렇게 처리되게 설계가 된 것 같습니다. ㅎㅎ
관련 글
[pyqt5] 프로그램창을 항상 가장 위에 있게 하면서 동시에 타이틀 바도 없게 하려면?
참고자료
[1] https://www.qtcentre.org/threads/13198-How-to-hide-Close-Button-quot-X-quot-on-Widget
'코딩 > pyqt, pyside' 카테고리의 다른 글
[PyQt6] pyqt 앱 윈도우 크기 고정 방법 (0) | 2022.08.05 |
---|---|
[PySide6] QLabel 수평 가운데에 배치하기 (0) | 2022.07.23 |
[PySide6] QLineEdit 위젯에 placeholder 넣는 방법 (0) | 2022.07.22 |
[PySide6] config.ini 설정값 읽고 변경하는 방법 (0) | 2022.07.07 |
[pyside6] 창 타이틀바에서 닫기 버튼, 최소화 버튼, 최대화 버튼 등을 비활성화 되게 하려면? (0) | 2022.06.07 |
[pyqt5] 야구 중계에 스트라이크 존이 제공되지 않을 때 시청자를 위한 가이드 앱 (2) | 2022.03.16 |
[pyside6] QLabel에 이미지 넣을 때 종횡비(aspect ratio) 설정 (2) | 2022.02.27 |
[pyside6] 위젯 내 글자 크기를 변경하고 싶을 때 (0) | 2022.02.26 |
[pyside6] QThreadPool을 이용해서 몇 개의 스레드가 활성화되어 있는지 확인하기 (0) | 2022.02.25 |