본문 바로가기
IT

Pyside6 window resize & layout

by 소혜민 2022. 5. 22.
반응형

FramelessWindowHint로 옵션을 설정한 상태에서 리사이즈를 하도록 코드 수정하다가 찾은 코드, 일반적인 UI의 프로그램을 만들때 시작점이 될만하다.

 

 

인터넷에서 찾은 코드,

바로 컴파일이 안되어 조금 수정하니 바로 잘 동작을 한다.

 

from PySide6.QtCore import QTimer, Qt
from PySide6.QtWidgets import (QMainWindow, QApplication, QPushButton, QHBoxLayout,QTextEdit,
                             QVBoxLayout, QWidget)

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        #self.setFixedSize(800, 400)
        #self.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint)

        self.w2 = QWidget()
        self.l = QVBoxLayout(self.w2)

        self.h = QHBoxLayout(self.w2)
        self.b = QPushButton('hierarchic adjustSize()')
        self.b2 = QPushButton('deferred resize()')
        self.h.addWidget(self.b)
        self.h.addWidget(self.b2)
        self.l.addLayout(self.h)

        self.x = QTextEdit('Some Text')
        self.l.addWidget(self.x)
        self.b.clicked.connect(self.adjustSize_hide_show)
        self.b2.clicked.connect(self.qtimer_hide_show)
        self.setCentralWidget(self.w2)

    def toggleVis(self):
        self.x.setVisible(not self.x.isVisible())

    def adjustSize_hide_show(self):
        self.toggleVis()
        self.w2.adjustSize() # adjusts size of widget
        self.adjustSize() # adjusts size of main window

    def qtimer_hide_show(self):
        self.toggleVis()
        _timer = QTimer()
        _timer.singleShot(30, self._resizeHeight)

    def _resizeHeight(self):
        self.resize(self.width(), self.minimumSizeHint().height())


if __name__ == '__main__':
    app = QApplication([])
    win = MainWindow()
    win.show()
    app.exec_()
반응형

'IT' 카테고리의 다른 글

Pyside6 Custom QTextEdit  (0) 2022.05.30
Python Menu & Toolbar  (0) 2022.05.25
PySide6 Customized Window  (0) 2022.05.21
Python socket error (소켓 통신 에러)  (0) 2022.05.20
[Python] 엑셀을 수식 자동으로 수정하기  (0) 2022.04.23

댓글