9๊ฐ. ํ๋ก๊ทธ๋จ ์ข ๋ฃ

1. ๋ชฉํ
๋๋ณด๊ธฐ
- File ๋ฉ๋ด์ Close ํญ๋ชฉ๊ณผ ๋จ์ถํค Ctrl+Q ๋ฅผ ๋๋ ์ ๋ ํ๋ก๊ทธ๋จ์ด ์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋๋ก ๊ตฌํํ๋ค
- ๋ฉ์ธ ์๋์ฐ๋ฅผ ๋ซ์ผ๋ฉด Qt ์ด๋ฒคํธ ๋ฃจํ๊ฐ ์ข ๋ฃ๋๊ณ , ํ์ด์ฌ ํ๋ก์ธ์ค๊ฐ ๋๋๋ ํ๋ฆ์ ์ดํดํ๋ค
- Qt Designer ์์ ๋ง๋ QAction ๊ณผ ํ์ด์ฌ ์ฌ๋กฏ ๋ฉ์๋๋ฅผ ์ฐ๊ฒฐํ๋ ํจํด์ ๋ณต์ตํ๋ค
- ์ดํ ๋จ๊ณ์์ ์ข ๋ฃ ์ ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ผ๋ก ํ์ฅํ ์ ์๋ ๊ธฐ๋ฐ์ ๋ง๋ ๋ค
2. ์ ์ฒด ๋ก์ง
๋๋ณด๊ธฐ
# mainwindow.py
. . .
class MainWindow(QMainWindow):
def __init__(self, parent=None):
. . .
self.ui.actionClose.triggered.connect(self.exit_app)
. . .
def exit_app(self):
self.close()
# 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 + ์ฃผ์ ์ค๋ช
๋๋ณด๊ธฐ
๋์ผ
4. ๋ฉ๋ด ์ก์
๊ณผ ์ฌ๋กฏ ์ฐ๊ฒฐํ๊ธฐ (actionClose↔ exit_app)
๋๋ณด๊ธฐ


class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# QTextEdit ๋ณ์นญ ๋ฑ ๋ค๋ฅธ ์ด๊ธฐํ ์ฝ๋๊ฐ ๋จผ์ ์จ๋ค
self.editor = self.ui.textEdit
# 9.9 ํ๋ก๊ทธ๋จ ์ข
๋ฃ ๊ธฐ๋ฅ
# File ๋ฉ๋ด์ Close ํญ๋ชฉ๊ณผ ํด๋ฐ ์์ด์ฝ, ๋จ์ถํค Ctrl+Q ๋
# ๋ชจ๋ actionClose ์ ์ฐ๊ฒฐ๋์ด ์๋ค
# ์ฌ๊ธฐ์ ๊ทธ ์๊ทธ๋์ MainWindow.exit_app ์ฌ๋กฏ์ ์ฐ๊ฒฐํ๋ค
self.ui.actionClose.triggered.connect(self.exit_app)
- QAction ์ด๋ฆ actionClose
- File ๋ฉ๋ด์ ์ถ๊ฐ๋์ด ์๊ณ
- ๋จ์ถํค๋ Ctrl+Q ๋ก ์ค์ ๋์ด ์๋ค
5. ํ๋ก๊ทธ๋จ ์ข ๋ฃ ๊ธฐ๋ฅ ๊ตฌํ ํจ์
๋๋ณด๊ธฐ


def exit_app(self):
# ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํ๋ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ์ฌ๋กฏ ๋ฉ์๋์ด๋ค
# ์ด ๋ฉ์๋๋ File ๋ฉ๋ด์ Close ์ก์
์ด ๋๋ ธ์ ๋ ํธ์ถ๋๋ค
# ํ์ต์ฉ์ผ๋ก ์ฝ์์ ๋ก๊ทธ๋ฅผ ๋จ๊ธด๋ค
# ์ค์ ๋ฐฐํฌ์ฉ ํ๋ก๊ทธ๋จ์์๋ ์๋ต ๊ฐ๋ฅํ๋ค
print("ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค")
# QMainWindow.close ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด
# ๋ฉ์ธ ์๋์ฐ๊ฐ ๋ซํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ก QApplication ์ด๋ฒคํธ ๋ฃจํ๊ฐ ๋๋๋ค
# main.py ์์ sys.exit(app.exec()) ๋ก ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ผ๋ฏ๋ก
# ์ฌ๊ธฐ์ close ๊ฐ ํธ์ถ๋๋ฉด app.exec() ์ด ๋ฐํ๋๊ณ ํ๋ก๊ทธ๋จ์ด ์์ ํ ์ข
๋ฃ๋๋ค
self.close()
์ข ๋ ๋ฐ์ ์ํค๊ณ ์ถ๋ค๋ฉด
- ์ข ๋ฃ ์ ์ maybe_save ๋ฅผ ํธ์ถํด ์์ ๋ ๋ด์ฉ์ ์ ์ฅํ ์ง ๋ฌผ์ด๋ณธ๋ค
- ์ฌ์ฉ์๊ฐ ์ทจ์๋ฅผ ์ ํํ๋ฉด ์ข ๋ฃ๋ฅผ ๋ง๋๋ค
6. ์คํ ํ ์คํธ
7. ํ์ต ์ฃผ์ ํฌ์ธํธ
๋๋ณด๊ธฐ
Qt ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ๋ฃ ํ๋ฆ ์ดํด
- main.py ์์ QApplication ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ app.exec ์ผ๋ก ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์คํํ๋ค
- ๋ฉ์ธ ์๋์ฐ๊ฐ ๋ซํ๋ฉด ์ด๋ฒคํธ ๋ฃจํ๊ฐ ์ข ๋ฃ๋๊ณ app.exec ์ด ๋ฐํ๋๋ค
- ๊ทธ ๋ฐํ๊ฐ์ sys.exit ๋ก ๋๊ฒจ ์ฃผ๋ฉด ์ด์์ฒด์ ์ ์ข ๋ฃ ์ฝ๋๋ฅผ ์ ๋ฌํ๋ฉด์ ํ๋ก์ธ์ค๊ฐ ๋๋๋ค
QAction ๊ณผ ์ฌ๋กฏ ์ฐ๊ฒฐ ํจํด ๋ณต์ต
- Qt Designer ์์ ๋ง๋ QAction(actionClose) ์
ํ์ด์ฌ ์ฝ๋์์ self.ui.actionClose.triggered.connect(self.exit_app) ์ผ๋ก ์ฐ๊ฒฐํ๋ค - ์ด ํจํด์ ์ ์ฅ, ์ด๊ธฐ, ํ๋ฆฐํธ, PDF ๋ด๋ณด๋ด๊ธฐ, ํธ์ง ๊ธฐ๋ฅ ๋ฑ
๋ชจ๋ ๋ฉ๋ด ๊ธฐ๋ฅ์์ ๋ฐ๋ณตํด์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ด๋ค
์ข ๋ฃ ๊ธฐ๋ฅ์ ๋จ์ํ์ง๋ง ์ค์ํ๋ค
- ํ์ผ ์ ์ฅ, ์ธ์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฝ๋๊ฐ ๊ธธ๊ณ ๋ณต์กํ์ง๋ง
์ข ๋ฃ ๊ธฐ๋ฅ์ self.close ํ ์ค์ด๋ฉด ๋์ํ๋ค - ํ์ง๋ง ํ๋ก๊ทธ๋จ ์ ์ฒด ์๋ช
์ฃผ๊ธฐ์ ๋ง์ง๋ง ๋จ๊ณ์ด๋ฏ๋ก
๋์ค์ ๋ณ๊ฒฝ ๋ด์ฉ ์ ์ฅ, ๋ก๊ทธ ๋จ๊ธฐ๊ธฐ, ๋ฆฌ์์ค ์ ๋ฆฌ ๋ฑ
์ค์ํ ์ฒ๋ฆฌ๊ฐ ๋ชจ์ด๋ ์ง์ ์ด๊ธฐ๋ ํ๋ค
์ด์ ๋จ๊ณ์์ ์ฐ๊ฒฐ ์์ํ๊ธฐ
- 9.3, 9.4, 9.5 ๋จ๊ณ์์ QFile, QTextStream ๊ธฐ๋ฐ ํ์ผ ์ ์ฅ๊ณผ ๋ถ๋ฌ์ค๊ธฐ๋ฅผ ๊ตฌํํ๋ค๋ฉด
9.9 ๋จ๊ณ์์ ์ข ๋ฃ ์ ์ maybe_save ๋ฅผ ํธ์ถํด
์์ ๋ ๋ด์ฉ์ ์ ์ฅํ ์ง ๋ฌผ์ด๋ณด๋ ๊ตฌ์กฐ๋ก ์์ฐ์ค๋ฝ๊ฒ ํ์ฅํ ์ ์๋ค - ์ด๋ ๊ฒ ํ๋ฉด ํ๋ก๊ทธ๋จ ์ข
๋ฃ ๊ธฐ๋ฅ์ด
๋จ์ํ ์ฐฝ๋ง ๋ซ๋ ์ญํ ์ด ์๋๋ผ
๋ฐ์ดํฐ ์์ค์ ๋ง๋ ์์ ์ฅ์น ์ญํ ๊น์ง ์ํํ๊ฒ ๋๋ค
PySide6 ๋ฌธ๋ฒ๊ณผ ํ์ด์ฌ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ์ญํ ๋ถ๋ฆฌ
- ์ข
๋ฃ ์์ฒด๋ ํ์ด์ฌ์ sys.exit ๋ ๊ฐ๋ฅํ์ง๋ง
Qt ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ณดํต ์์ ฏ์ close ๋ฉ์๋๋ฅผ ํตํด ์ข ๋ฃ๋ฅผ ์ ๋ํ๋ค - ํ์ผ ์ ์ฅ, ๋ถ๋ฌ์ค๊ธฐ ๊ฐ์ ์์
์ ์ด ํ๋ก์ ํธ์์๋
ํ์ด์ฌ open ๋์ Qt ์ QFile, QTextStream ์ผ๋ก ๊ตฌํํ๋ ๋ฐฉํฅ์ ์ด๋ฏธ ์ก์์ผ๋ฏ๋ก
์ข ๋ฃ ๋จ๊ณ์์๋ ์ด ๊ธฐ๋ฅ๋ค์ ์กฐํฉํด ์์ ํ ์ข ๋ฃ ํ๋ฆ์ ์ค๊ณํ๋ค๋ ๊ด์ ์ผ๋ก ์ค๋ช ํด ์ค ์ ์๋ค
๋จ๊ณ๋ณ ์์ฑ ํ์ผ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote

