Pyside6 window resize & layout

2022. 5. 22. 00:07IT

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