{"id":8328,"date":"2019-10-28T15:39:27","date_gmt":"2019-10-28T06:39:27","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=8328"},"modified":"2020-05-28T10:07:56","modified_gmt":"2020-05-28T01:07:56","slug":"pyqt5-%eb%a9%94%ec%9d%b8-%ec%9c%88%eb%8f%84%ec%9a%b0%ec%99%80-%eb%8b%a4%ec%9d%b4%ec%96%bc%eb%a1%9c%ea%b7%b8-%ec%97%b0%eb%8f%99","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=8328","title":{"rendered":"[PyQt5] \uba54\uc778 \uc708\ub3c4\uc6b0\uc640 \ub2e4\uc774\uc5bc\ub85c\uadf8 \uc5f0\ub3d9"},"content":{"rendered":"<p>\uba54\uc778 \uc708\ub3c4\uc6b0\uc5d0\uc11c \ub300\ud654\uc0c1\uc790\ub97c \uc5f4\uace0, \ub300\ud654\uc0c1\uc790\uc5d0\uc11c \uc785\ub825\ud55c \uac12\uc744 \uba54\uc778 \uc708\ub3c4\uc6b0\uc5d0 \ud45c\uc2dc\ud558\uace0\ud558\ub294 \uacbd\uc6b0\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4. UI \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 PyQt5\ub97c \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \uba54\uc778 \ubaa8\ub4c8\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc785\ub2c8\ub2e4. \ucc38\uace0\ub85c \uc774\uae00\uc740 PyQt5\uc5d0 \ub300\ud55c \ucd5c\uc18c\ud55c\uc758 \uae30\ucd08 \ub0b4\uc6a9\uc744 \ud30c\uc545\ud558\uace0 \uc788\ub294 \uac1c\ubc1c\uc790\ub97c \ub300\uc0c1\uc73c\ub85c \ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport sys\r\nfrom MainWindow import MainWindow\r\nfrom PyQt5.QtWidgets import *\r\n\r\nif __name__ == '__main__':\r\n    app = QApplication(sys.argv)\r\n    win = MainWindow()\r\n    win.show()\r\n    sys.exit(app.exec_())\r\n<\/pre>\n<p>\uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c \uba54\uc778 \uc708\ub3c4\uc6b0\ub294 MainWindow.py \ud30c\uc77c\uc5d0 \uc815\uc758\ub418\uc5b4 \uc788\uc73c\uba70, \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport sys\r\nfrom PyQt5.QtWidgets import *\r\nfrom PyQt5.QtCore import *\r\nfrom SubWindow import SubWindow\r\n\r\nclass MainWindow(QMainWindow):\r\n    def __init__(self):\r\n        super().__init__()\r\n        self.initUI()\r\n\r\n    def initUI(self):\r\n        self.setWindowTitle('Main Window')\r\n        self.setGeometry(100, 100, 300, 200)\r\n\r\n        layout = QVBoxLayout()\r\n        layout.addStretch(1)\r\n\r\n        label = QLabel(\"\ubbf8\uc9c0\uc815\")\r\n        label.setAlignment(Qt.AlignCenter)\r\n        font = label.font()\r\n        font.setPointSize(30)\r\n        label.setFont(font)\r\n        self.label = label\r\n\r\n        btn = QPushButton(\"\uac12 \uc5bb\uc5b4\uc624\uae30\")\r\n        btn.clicked.connect(self.onButtonClicked)\r\n\r\n        layout.addWidget(label)\r\n        layout.addWidget(btn)\r\n\r\n        layout.addStretch(1)\r\n\r\n        centralWidget = QWidget()\r\n        centralWidget.setLayout(layout)\r\n        self.setCentralWidget(centralWidget)\r\n\r\n    def onButtonClicked(self):\r\n        win = SubWindow()\r\n        r = win.showModal()\r\n\r\n        if r:\r\n            text = win.edit.text()\r\n            self.label.setText(text)\r\n\r\n    def show(self):\r\n        super().show()\r\n<\/pre>\n<p>\uc704\uc758 \uba54\uc778 \uc708\ub3c4\uc6b0\ub294 \uc544\ub798\uc640 \uac19\uc740 UI\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/10\/PyQt5_MainWindow.png\" alt=\"\" width=\"824\" height=\"668\" class=\"aligncenter size-full wp-image-8331\" \/><\/p>\n<p>&#8220;\uac12 \uc5bb\uc5b4\uc624\uae30&#8221; \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uba74 \ub300\ud654\ucc3d\uc744 \ud45c\uc2dc\ub418\uba70, \ud45c\uc2dc\ub41c \ub300\ud654\ucc3d\uc5d0\uc11c \ud14d\uc2a4\ud2b8\ub97c \uc785\ub825\ud558\uace0 \ub300\ud654\ucc3d\uc758 &#8220;\ud655\uc778&#8221; \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uba74 \ub300\ud654\ucc3d\uc5d0\uc11c \uc785\ub825\ud55c \ud14d\uc2a4\ud2b8\uac12\uc744 \uba54\uc778 \uc708\ub3c4\uc6b0\uc758 \ub77c\ubca8 \uc704\uc82f\uc5d0 \ud45c\uc2dc\ud558\uac8c \ub429\ub2c8\ub2e4. \ub300\ud654\ucc3d\uc5d0 \ub300\ud55c \ucf54\ub4dc \ud30c\uc77c\uc740 SubWindow.py\uc774\uba70 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport sys\r\nfrom PyQt5.QtWidgets import *\r\n\r\nclass SubWindow(QDialog):\r\n    def __init__(self):\r\n        super().__init__()\r\n        self.initUI()\r\n\r\n    def initUI(self):\r\n        self.setWindowTitle('Sub Window')\r\n        self.setGeometry(100, 100, 200, 100)\r\n\r\n        layout = QVBoxLayout()\r\n        layout.addStretch(1)\r\n\r\n        edit = QLineEdit()\r\n        font = edit.font()\r\n        font.setPointSize(20)\r\n        edit.setFont(font)\r\n        self.edit = edit\r\n\r\n        subLayout = QHBoxLayout()\r\n        \r\n        btnOK = QPushButton(\"\ud655\uc778\")\r\n        btnOK.clicked.connect(self.onOKButtonClicked)\r\n\r\n        btnCancel = QPushButton(\"\ucde8\uc18c\")\r\n        btnCancel.clicked.connect(self.onCancelButtonClicked)\r\n\r\n        layout.addWidget(edit)\r\n        \r\n        subLayout.addWidget(btnOK)\r\n        subLayout.addWidget(btnCancel)\r\n        layout.addLayout(subLayout)\r\n\r\n        layout.addStretch(1)\r\n\r\n        self.setLayout(layout)\r\n\r\n    def onOKButtonClicked(self):\r\n        self.accept()\r\n\r\n    def onCancelButtonClicked(self):\r\n        self.reject()\r\n\r\n    def showModal(self):\r\n        return super().exec_()\r\n<\/pre>\n<p>\uc544\ub798\ub294 \uba54\uc778 \uc708\ub3c4\uc6b0\uc5d0\uc11c \uc704\uc758 \ucf54\ub4dc\uc5d0 \ub300\ud55c \ub300\ud654\ucc3d\uc744 \ud45c\uc2dc\ud55c \ub4a4 \uc0ac\uc6a9\uc790\uac00 &#8220;\ud558\uc774! PyQt5&#8243;\ud14d\uc2a4\ud2b8\ub97c \uc785\ub825\ud55c \ud654\uba74\uc785\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/10\/PyQt5_SubWindow.png\" alt=\"\" width=\"624\" height=\"482\" class=\"aligncenter size-full wp-image-8334\" \/><\/p>\n<p>\uc704\uc758 \ud654\uba74\uc5d0\uc11c \ub2eb\uae30 \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uba74 \ucc3d\uc774 \ub2eb\ud788\uace0 \uba54\uc778 \uc708\ub3c4\uc6b0\uc5d0 \ub300\ud654\ucc3d\uc5d0\uc11c \uc785\ub825\ud55c \ud14d\uc2a4\ud2b8\uac00 \ud45c\uc2dc\ub418\ub294\ub370, \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/10\/PyQt5_MainWindow2.png\" alt=\"\" width=\"824\" height=\"668\" class=\"aligncenter size-full wp-image-8336\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uba54\uc778 \uc708\ub3c4\uc6b0\uc5d0\uc11c \ub300\ud654\uc0c1\uc790\ub97c \uc5f4\uace0, \ub300\ud654\uc0c1\uc790\uc5d0\uc11c \uc785\ub825\ud55c \uac12\uc744 \uba54\uc778 \uc708\ub3c4\uc6b0\uc5d0 \ud45c\uc2dc\ud558\uace0\ud558\ub294 \uacbd\uc6b0\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4. UI \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 PyQt5\ub97c \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \uba54\uc778 \ubaa8\ub4c8\uc5d0 \ub300\ud55c \ucf54\ub4dc\uc785\ub2c8\ub2e4. \ucc38\uace0\ub85c \uc774\uae00\uc740 PyQt5\uc5d0 \ub300\ud55c \ucd5c\uc18c\ud55c\uc758 \uae30\ucd08 \ub0b4\uc6a9\uc744 \ud30c\uc545\ud558\uace0 \uc788\ub294 \uac1c\ubc1c\uc790\ub97c \ub300\uc0c1\uc73c\ub85c \ud569\ub2c8\ub2e4. import sys from MainWindow import MainWindow from PyQt5.QtWidgets import * if __name__ == &#8216;__main__&#8217;: app = QApplication(sys.argv) win = MainWindow() win.show() &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=8328\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[PyQt5] \uba54\uc778 \uc708\ub3c4\uc6b0\uc640 \ub2e4\uc774\uc5bc\ub85c\uadf8 \uc5f0\ub3d9&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131,1],"tags":[],"class_list":["post-8328","post","type-post","status-publish","format-standard","hentry","category-python","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8328"}],"version-history":[{"count":8,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8328\/revisions"}],"predecessor-version":[{"id":9366,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8328\/revisions\/9366"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8328"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}