Widget의 배치 #1

Widget들의 배치하는 방법을 배우도록 하겠습니다.

앞서 우리는 위젯 하나하나를 배웠습니다. 이 때 배웠던 것은 해당 위젯이 어떤 옵션이 있고 어떤 기능을 하는지를 배우기 위해서 입니다. 이제는 위젯들을 적제적소에 배치하고 위젯들간의 연결고리를 어떻게 만드는지 배우게 됩니다. 그리고 앞서 배우지 않았던 다른 Widget들도 나타납니다. 허나 같은 패턴이기 때문에 너무 당황하지 마시기 바랍니다.

Widget의 배치 #1의 결과물

윈도우 만들기

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5 import QtGui
class App(QWidget):
    def __init__(self):
        super(App, self).__init__()
        self.setWindowTitle('Widget 배치!!!')
        self.resize(400, 600)
        self.addTitle()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec_())

크기 400, 600(가로, 세로) 윈도우를 만듭니다.

레이블 추가

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5 import QtGui
class App(QWidget):
    def __init__(self):
        super(App, self).__init__()
        self.setWindowTitle('Widget 배치!!!')
        self.resize(400, 600)
        self.addWidgets()
    def addWidgets(self):
        self.title = QLabel('위젯들을 붙여봅시다!!', self)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec_())

11 위젯 추가를 한번에 관리하기 위해 함수를 만들었습니다. 13 QLabel을 만듭니다. 만드는 방법은 QLabel('레이블에 적을 글', 어디에 붙일지)

레이블 크기 조절 및 위치 이동

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5 import QtGui
class App(QWidget):
    def __init__(self):
        super(App, self).__init__()
        self.setWindowTitle('Widget 배치!!!')
        self.resize(400, 600)
        self.addWidgets()
    def addWidgets(self):
        self.label_title = QLabel('위젯들을 붙여봅시다!!', self)
        self.label_title.move(0,20)
        self.label_title.resize(400, 40)
        self.label_title.setAlignment(Qt.AlignCenter)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec_())

14 레이블의 위치를 (20, 20) (가로, 세로) 위치로 이동시킵니다. 15 레이블의 크기를 가로는 윈도우 크기 만큼, 세로는 40으로 만들었습니다. 16 글자를 레이블 가운데 위치 시켰습니다.

글자 크기 및 색상 변경

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5 import QtGui
from PyQt5.QtGui import QPalette
class App(QWidget):
    def __init__(self):
        super(App, self).__init__()
        self.setWindowTitle('Widget 배치!!!')
        self.resize(400, 600)
        self.addWidgets()
    def addWidgets(self):
        self.label_title = QLabel('위젯들을 붙여봅시다!!', self)
        self.label_title.move(0,20)
        self.label_title.resize(400, 40)
        self.label_title.setAlignment(Qt.AlignCenter)
        self.titleFont()
        self.titleFontColor()
    def titleFont(self):
        font = QtGui.QFont()
        font.setPointSize(30)
        self.label_title.setFont(font)
    def titleFontColor(self):
        pal = QtGui.QPalette()
        pal.setColor(QPalette.WindowText, QtGui.QColor(38,38,38))
        self.label_title.setPalette(pal)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec_())

18, 19 폰트와 글자 색 변경은 준비가 필요하기 때문에 따로 함수로 뺐습니다.

!! 이전에 배운 QLabel 과 비교해서 어떤 차이점이 있는지 확인을 해보는게 중요합니다.

Last updated