Pyside6 window resize & layout
2022. 5. 22. 00:07ㆍIT
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 |