1. ๋ชฉํ‘œ

๋”๋ณด๊ธฐ

PySide6 QTextEdit ์œ„์ ฏ์— ๋‹ค์Œ ๋„ค ๊ฐ€์ง€ ๋ฌธ๋‹จ ์ •๋ ฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์—ฐ์Šตํ•œ๋‹ค.

  • ์™ผ์ชฝ ์ •๋ ฌ
  • ๊ฐ€์šด๋ฐ ์ •๋ ฌ
  • ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ
  • ์–‘์ชฝ ์ •๋ ฌ(Justify)

๊ทธ๋ฆฌ๊ณ 

  • QMenu ์˜ QAction ๊ณผ ์Šฌ๋กฏ ํ•จ์ˆ˜ ์—ฐ๊ฒฐ ๋ฐฉ์‹ ๋ณต์Šต
  • Qt.AlignmentFlag ๋ฅผ ์ด์šฉํ•œ setAlignment ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ์ดํ•ด

 

2. ์ „์ฒด ๋กœ์ง

๋”๋ณด๊ธฐ
# mainwindow.py

from PySide6.QtCore import Qt

. . .

class MainWindow(QMainWindow):
    def __init__(self, parent=None):

        . . .
        
        self.ui.actionLeft.triggered.connect(self.align_left)
        self.ui.actionCenter.triggered.connect(self.align_center)
        self.ui.actionRight.triggered.connect(self.align_right)
        self.ui.actionJustify.triggered.connect(self.justify)
 
        . . .

    def align_left(self):
        self.editor.setAlignment(Qt.AlignmentFlag.AlignLeft)

    def align_center(self):
        self.editor.setAlignment(Qt.AlignmentFlag.AlignCenter)

    def align_right(self):
        self.editor.setAlignment(Qt.AlignmentFlag.AlignRight)

    def justify(self):
        self.editor.setAlignment(Qt.AlignmentFlag.AlignJustify)
# main.py

import sys
from PySide6.QtWidgets import QApplication

from mainwindow import MainWindow

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec())

 

3. ํ•„์š”ํ•œ import + ์ฃผ์„ ์„ค๋ช…

๋”๋ณด๊ธฐ
from PySide6.QtCore import Qt
# Qt
#  ์ •๋ ฌ, ๋ฐฉํ–ฅ, ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ, ํ‚ค๋ณด๋“œ ์ˆ˜์ •์ž ๋“ฑ
#  ๋‹ค์–‘ํ•œ ์ƒ์ˆ˜(enum)๋ฅผ ๋ชจ์•„ ๋‘” ๋„ค์ž„์ŠคํŽ˜์ด์Šค
#  ์—ฌ๊ธฐ์„œ๋Š” AlignmentFlag.AlignLeft ๊ฐ™์€ ์ •๋ ฌ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด import ํ•œ๋‹ค


4. ๋ฉ”๋‰ด ์•ก์…˜๊ณผ ์Šฌ๋กฏ ์—ฐ๊ฒฐํ•˜๊ธฐ

๋”๋ณด๊ธฐ
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # QTextEdit ์— ์ž์ฃผ ์ ‘๊ทผํ•˜๋ฏ€๋กœ ๋ณ„์นญ์„ ๋งŒ๋“ค์–ด ๋‘”๋‹ค
        # self.ui.textEdit ์„ ๊ทธ๋Œ€๋กœ ์จ๋„ ๋˜์ง€๋งŒ, editor ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์“ฐ๋ฉด ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค
        self.editor = self.ui.textEdit

        # ๋ฌธ๋‹จ ์ •๋ ฌ ์•ก์…˜์„ ์Šฌ๋กฏ์— ์—ฐ๊ฒฐํ•œ๋‹ค
        # Qt Designer ์˜ objectName ๊ธฐ์ค€์œผ๋กœ actionLeft, actionCenter, actionRight, actionJustify ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค

        # ํŒŒ์ผ ๋ฉ”๋‰ด์™€ ํˆด๋ฐ”์— ์žˆ๋Š” ์ขŒ์ธก ์ •๋ ฌ ์•ก์…˜์„ align_left ํ•จ์ˆ˜์— ์—ฐ๊ฒฐ
        self.ui.actionLeft.triggered.connect(self.align_left)

        # ๊ฐ€์šด๋ฐ ์ •๋ ฌ ์•ก์…˜์„ align_center ํ•จ์ˆ˜์— ์—ฐ๊ฒฐ
        self.ui.actionCenter.triggered.connect(self.align_center)

        # ์šฐ์ธก ์ •๋ ฌ ์•ก์…˜์„ align_right ํ•จ์ˆ˜์— ์—ฐ๊ฒฐ
        self.ui.actionRight.triggered.connect(self.align_right)

        # ์–‘์ชฝ ์ •๋ ฌ ์•ก์…˜์„ justify ํ•จ์ˆ˜์— ์—ฐ๊ฒฐ
        self.ui.actionJustify.triggered.connect(self.justify)

์ด ๋‹จ๊ณ„์—์„œ๋Š” ์ด๋ฏธ form.ui ์— ๋‹ค์Œ QAction ์ด ์ค€๋น„๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

  • actionLeft
  • actionCenter
  • actionRight
  • actionJustify

 

5. ์ •๋ ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ํ•จ์ˆ˜

๋”๋ณด๊ธฐ

 

    def align_left(self):
        # ์™ผ์ชฝ ์ •๋ ฌ
        # AlignLeft ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๋ฌธ๋‹จ(๋˜๋Š” ์„ ํƒ๋œ ๋ฌธ๋‹จ๋“ค)์„ ์™ผ์ชฝ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค
        # ์ผ๋ฐ˜์ ์ธ ๋ฉ”๋ชจ์žฅ ๊ธฐ๋ณธ ์ •๋ ฌ ๋ฐฉ์‹๊ณผ ๋™์ผํ•˜๋‹ค
        self.editor.setAlignment(Qt.AlignmentFlag.AlignLeft)

    def align_center(self):
        # ๊ฐ€์šด๋ฐ ์ •๋ ฌ
        # ์ œ๋ชฉ์ด๋‚˜ ๊ฐ•์กฐํ•˜๊ณ  ์‹ถ์€ ๋ฌธ์žฅ์„ ์ค‘์•™์— ๋ฐฐ์น˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค
        self.editor.setAlignment(Qt.AlignmentFlag.AlignCenter)

    def align_right(self):
        # ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ
        # ๋‚ ์งœ๋‚˜ ์„œ๋ช…์ฒ˜๋Ÿผ ์˜ค๋ฅธ์ชฝ ๋์— ๋งž์ถ”๊ณ  ์‹ถ์€ ์ •๋ณด๋ฅผ ์ ์„ ๋•Œ ์œ ์šฉํ•˜๋‹ค
        self.editor.setAlignment(Qt.AlignmentFlag.AlignRight)

    def justify(self):
        # ์–‘์ชฝ ์ •๋ ฌ
        # ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์—ฌ๋ฐฑ์„ ๋ชจ๋‘ ๋งž์ถ”๋„๋ก ๋‹จ์–ด ๊ฐ„ ๊ฐ„๊ฒฉ์„ ์กฐ์ ˆํ•˜๋Š” ์ •๋ ฌ ๋ฐฉ์‹์ด๋‹ค
        # ๋ฌธ๋‹จ ์ „์ฒด๊ฐ€ ์ง์‚ฌ๊ฐํ˜• ๋ธ”๋ก ํ˜•ํƒœ๋กœ ์ •๋ ฌ๋˜์–ด ๋ฌธ์„œ๊ฐ€ ์ •๋ˆ๋œ ๋А๋‚Œ์„ ์ค€๋‹ค
        self.editor.setAlignment(Qt.AlignmentFlag.AlignJustify)

QTextEdit ๊ฐ€ ๋ฌธ๋‹จ ๋‹จ์œ„๋กœ ์ •๋ ฌ์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ๋ณ„๋„์˜ ์ปค์„œ ์กฐ์ž‘ ์—†์ด setAlignment ๋งŒ ํ˜ธ์ถœํ•ด๋„ ๋œ๋‹ค.


 

6. ์‹คํ–‰ ํ…Œ์ŠคํŠธ

 

7. ํ•™์Šต ์ฃผ์š” ํฌ์ธํŠธ

๋”๋ณด๊ธฐ

 

QTextEdit ๋ฌธ๋‹จ ์ •๋ ฌ ๋ฉ”์„œ๋“œ

  • setAlignment ๋ฉ”์„œ๋“œ๋Š” ํ˜„์žฌ ์ปค์„œ๊ฐ€ ์œ„์น˜ํ•œ ๋ฌธ๋‹จ ๋˜๋Š” ์„ ํƒ๋œ ๋ฌธ๋‹จ๋“ค ์ „์ฒด์— ์ ์šฉ๋œ๋‹ค.
  • ์ธ์ž๋กœ Qt.AlignmentFlag ๊ฐ’์„ ์ „๋‹ฌํ•œ๋‹ค.

 

Qt.AlignmentFlag ์‚ฌ์šฉ๋ฒ•

  • AlignLeft, AlignCenter, AlignRight, AlignJustify ๋“ฑ ๋‹ค์–‘ํ•œ ์ •๋ ฌ ์ƒ์ˆ˜๊ฐ€ ์ค€๋น„๋˜์–ด ์žˆ๋‹ค.
  • import Qt ํ›„ Qt.AlignmentFlag.์ƒ์ˆ˜๋ช… ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์— ์ต์ˆ™ํ•ด์ง€๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

 

QAction ๊ณผ ์Šฌ๋กฏ ์—ฐ๊ฒฐ

  • ๋ฉ”๋‰ด์™€ ํˆด๋ฐ”์— ์žˆ๋Š” QAction ์˜ triggered ์‹œ๊ทธ๋„์„
    MainWindow ์˜ ์Šฌ๋กฏ ํ•จ์ˆ˜ align_left, align_center ๋“ฑ๊ณผ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ๊ตฌ์„ฑํ•œ๋‹ค.
  • objectName ๊ณผ ์ฝ”๋“œ์˜ ์•ก์…˜ ์ด๋ฆ„์ด ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.

 

editor ๋ณ„์นญ ์‚ฌ์šฉ

  • self.ui.textEdit ์„ ๊ทธ๋Œ€๋กœ ๋งค๋ฒˆ ์“ฐ๋Š” ๋Œ€์‹ 
    self.editor ๋กœ ๋ณ„์นญ์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง€๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง„๋‹ค.
  • ์ˆ˜์—…์—์„œ๋Š” ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ๋ณด์—ฌ์ฃผ๊ณ , ๋ณ„์นญ์„ ์“ฐ๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ๋ฉด ์ข‹๋‹ค.

 

ํŒŒ์ผ IO ์™€์˜ ๋ถ„๋ฆฌ

  • ๋ฌธ๋‹จ ์ •๋ ฌ ๊ธฐ๋Šฅ์€ ํŒŒ์ผ ์ž…์ถœ๋ ฅ๊ณผ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ด๋‹ค.
  • ์ด ๋‹จ๊ณ„์—์„œ๋Š” ์˜๋„์ ์œผ๋กœ QFile, QIODevice, QDir, QTextStream ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ 
    ํŽธ์ง‘๊ธฐ ๋‚ด๋ถ€ ์„œ์‹ ์กฐ์ž‘์—๋งŒ ์ง‘์ค‘ํ•˜๋„๋ก ๊ตฌ์„ฑํ•œ๋‹ค.


 

 

๋‹จ๊ณ„๋ณ„ ์™„์„ฑ ํŒŒ์ผ