상세 컨텐츠

본문 제목

[PySide6] QMainWindow 사용하기

pyside6

by 빨간눈동자 2021. 9. 1. 10:22

본문

반응형
import sys

from PySide6.QtCore import QSize, Qt
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton


class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("MyWindow")
        button = QPushButton("Click")
        self.setFixedSize(QSize(400, 300))
        self.setCentralWidget(button)
        

app = QApplication(sys.argv)
window = MyWindow()
window.show()

app.exec()

이전 게시글에서 공부한 code를 다시 불러오자 

2021.08.31 - [pyside6] - [PySide6] 버튼 사용하기 #1

import sys
from PySide6.QtWidgets import QApplication, QPushButton   # 사용할 class import함 
from PySide6.QtCore import Slot                           # Slot decorator 사용을 위해 import함

@Slot()
def say_hello():                                          # button click 시, 호출될 function
 print("Button clicked, Hello!")

# Create the Qt Application
app = QApplication(sys.argv)                              # QApplication class로 instance 생성
# Create a button, connect it and show it
button = QPushButton("Click me")                          # Button 생성
button.clicked.connect(say_hello)                         # button에 "say_hello" function 연결
button.show()
# Run the main Qt loop
app.exec()                                                # Qt main loop 진입 및 Qt code 시작

window10 환경에서 실행 결과

실행 결과는 위와 같이 button이 존재하는 window가 나타났다. 

보는바와 같이 모든 widget은 window가 될 수 있다. 다만 위와 같은 구조로는 효과적인 프로그램을 만들 수 있다. 

( button이 하나만 존재하는 window로는 할 수 있는 것이 많지 않다. ) 

 

다양한 widget 들이 빈(empty) widget을 구성하면 보다 유용한 프로그램을 만들 수 있을 것이다. 이를 위해서 QT에서 QMainWindow class가 지원된다. 

 

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow

app = QApplication(sys.argv)

window = QMainWindow()
window.show()

# Start the event loop.
app.exec()

ubunt 20.04 환경 실행 결과

실행 결과를 보면 empty(빈) window가 생성된 것을 볼 수 있다. 

 

다양한 widget이 포함된 custom window를 생성하기 위해서는 QMainWindow() class를 상속받은 MyWindow()를 생성하여 Button을 추가해보자. 

 

import sys

from PySide6.QtCore import QSize, Qt
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton


class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("MyWindow")           # MyWindow의 title을 "MyWindow"로 설정
        button = QPushButton("Click")

        self.setCentralWidget(button)             # button을 MyWindow의 중앙에 위치 시킴


app = QApplication(sys.argv)

window = MyWindow()
window.show()

app.exec()

 

 

이제 setFixedSize() 를 사용하여 생성된 MyWindow 및 widget의 size를 변경해 보자. 

import sys

from PySide6.QtCore import QSize, Qt
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton


class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("MyWindow")
        button = QPushButton("Click")
        self.setFixedSize(QSize(400, 300))        # <<<<<<<<<<<<<<<<< ADD
        self.setCentralWidget(button)
        

app = QApplication(sys.argv)
window = MyWindow()
window.show()

app.exec()

반응형

관련글 더보기