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
'Dev > python' 카테고리의 다른 글
[pandas 오류 해결] TypeError: read_excel() got an unexpected keyword argument 'fillna' (0) | 2022.06.26 |
---|---|
[matplotlib] 그래프 여러 개 서브플롯(subplot)으로 그리기 (0) | 2022.06.21 |
[python + pandas] 데이터프레임에서 특정 기간의 데이터 추출하기 (0) | 2022.06.21 |
[pandas] 데이터프레임의 특정 컬럼을 행 인덱스로 설정하는 방법, set_index() (0) | 2022.06.08 |
[python+pandas] 일간 데이터를 월간 데이터로 변환한 후에 선 그래프 그리기 (5) | 2022.06.06 |
[pandas] 선 그래프, 막대 그래프, 히스토그램, 박스 플롯 그리기 (0) | 2022.06.05 |
[pandas] 튜플의 리스트를 데이터프레임으로 만들기 (0) | 2022.05.30 |
[python+pandas] 데이터프레임의 기술 통계 정보(평균, 표준편차, 최대값, 최소값, 분위수)를 요약해주는 describe() 메소드 (0) | 2022.05.29 |