본문 바로가기

파이썬 윈도우 크기와 위치를 저장해 뒀다가 새로 시작할 때 가져올려 몇가지 검색..

 

그런데 너무 쉽게 되어 있어서 쓸 게 없을 정도.

왜 딱 바로 안찾아 지는지 모르지만

 

QMainWindow 에서 만든 파이썬 응용 같으면 아주 쉽다.

close 할때 이벤트에서 아래 정보를 저장하는 코드이다.

위치는 간단하게 .x(), .y()

크기도 간단하게 .width(), .height()

로 아주 손쉽게 정보를 가져올 수 있다.

    # close event 처리
    def closeEvent(self, ev):
        if QMessageBox.question(self, 'Closing', 'Really close?') == QMessageBox.Yes:
            # # 이상하게 사이즈가 2px 크게 나오네..
            # width = self.frameGeometry().width()
            # height = self.frameGeometry().height()
            # print("Enter CloseEvent", width, height)
            # 사이즈가 잘 나오네..
            print('Height: ' + str(self.height()) + ' | Width: ' + str(self.width()) + ' | X: ' + str(self.x()) + ' | Y: ' + str(self.y()))
            self.config['Last'] = {}
            self.config['Last']['height'] = self.height()
            self.config['Last']['width'] = self.width()
            self.config['Last']['x'] = self.x()
            self.config['Last']['y'] = self.y()
            self.config['Last']['close'] = strftime('%Y-%m-%d %H:%M:%S')
            # 설정파일 저장
            self.updateConfig('./config.json')
            
            self.deleteLater()
            ev.accept()
        else:
            ev.ignore()

 

재 로딩할 때 저장한 정보로 창 사이즈와 위치를 복원하고 싶다면, 간단하게 아래 코드를 참고해 보세용.

사이즈는 resize()

위치는 move() 

로 처리하면 된다.

        if (self.config['Last']['height'] is None):
            startSize = QSize(1024, 768)
            self.resize(startSize)
        else :
            startSize = QSize(self.config['Last']['width'], self.config['Last']['height'])
            self.resize(startSize)

        startPos = QPoint(self.config['Last']['x'],self.config['Last']['y'])
        self.move(startPos)

BJ.

와인 탱크 잘 정렬

Pixabay 님의 사진, 출처: Pexels

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.