Python/PyQt

[Python/파이썬] PyQt5 Text Edit 사용하기

CODE.J 2024. 6. 6. 23:24
반응형
반응형

PyQt에서 입/출력 수단은 많지만 우리에게 익숙한 형태는 Text Box 이지 않을까 합니다.

https://marketward.tistory.com/10에서 UI를 실행시켜 보셨다면 이제 Text Box를 구현해보도록 하겠습니다.

 

UI를 우선 만듭시다. Qt Designer를 실행 시킵니다.

 

1. 버튼 없는 UI를 선택합니다.

사실 버튼 있는 UI를 미리 만들 수 있지만... 버튼을 배치하는 재미를 위해 이런 선택을 해봤습니다. >_O

 

2. 버튼을 배치 합니다.

 

3. Text Edit 를 배치 합니다.

 

4. 버튼의 ObjectName을 입력합니다. 이 ObjectName은 Python 코드에서 호출하게될 이름 입니다.

 

5. Text Edit의 ObjectName을 입력 합니다. 마찬가지로 이 ObjectName을 통해 Text Edit에 결과물을 표기하려합니다.

 

6. Ctrl + S를 눌러서 "TextBox"로 저장 합니다. 저장 하실 때는 Python 코드와 같은 폴더에 넣어주세요!!

 

7. "TextBox.py" 파일을 생성하여 아래의 코드를 입력 합니다.

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

# pyqt5의 GUI 기본 실행폼은 https://marketward.tistory.com/10 을 참고 해주세요.
form_class = uic.loadUiType("./TextBox.ui")[0]

class MyWindow(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        #TextBox_exc 라고 이름 지었던 버튼이 눌리면 사용할 함수(def)를 지정 합니다.
        self.TextBox_exc.clicked.connect(self.TextBox_exc_clicked)

    # TextBox_exc 버튼을 눌렀을 때, 실행할 동작을 입력 합니다.
    def TextBox_exc_clicked(self):
        # TextBox_exc 버튼을 누르면 "Hello. World!"를 Text Box안에 입력하게 했습니다.
        self.Print_to_TextBox.setText("Hello. World!")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()
    app.exec_()

 

8. "TextBox.py"를 실행 시킵니다.

 

 

이제 아주 약간 응용을 해보겠습니다.

https://marketward.tistory.com/22

 

[Python/파이썬]네이버증권API 활용 - json에서 값 찾기

https://marketward.tistory.com/20 [Python/파이썬]네이버증권API 활용 - 종목 정보 가져오기 예전부터 사용하던 "https://api.finance.naver.com/service/itemSummary.nhn?itemcode=" 이 막힌 것으로 보입니다.. 따라서, 아래 2

marketward.tistory.com

 

위 글에서 사용된 네이버증권 API의 결과를 Text Edit로 불러오겠습니다.

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

#추가된 import
import json
import urllib.request

#Text Edit에 종목 정보를 표시하고자 합니다. 참고 : "https://marketward.tistory.com/22"
url = "https://m.stock.naver.com/api/stock/373220/integration"
raw_data = urllib.request.urlopen(url).read()
json_data = json.loads(raw_data)

#종목명 가져오기
stock_name = json_data['stockName']

#가격 가져오기
current_price = json_data['dealTrendInfos'][0]['closePrice']

#시총 가져오기
for code in json_data['totalInfos']:
    if 'marketValue' == code['code']:
        marketSum_value = code['value']

#PER 가져오기
for i in json_data['totalInfos']:
    if 'per' == i['code']:
        per_value_str = i['value']

#PBR 가져오기
for v in json_data['totalInfos']:
    if 'pbr' == v['code']:
        pbr_value_str = v['value']

# pyqt5의 GUI 기본 실행폼은 https://marketward.tistory.com/10 을 참고 해주세요.
form_class = uic.loadUiType("./TextBox.ui")[0]

class MyWindow(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        #TextBox_exc 라고 이름 지었던 버튼이 눌리면 사용할 함수(def)를 지정 합니다.
        self.TextBox_exc.clicked.connect(self.TextBox_exc_clicked)

    # TextBox_exc 버튼을 눌렀을 때, 실행할 동작을 입력 합니다.
    def TextBox_exc_clicked(self):
        # TextBox_exc 버튼을 누르면 json_data 값을 가져옵니다.
        self.Print_to_TextBox.setText("종목 이름 : %s / 현재가 : %s / 시총 : %s / Per : %s / Pbr : %s"%(stock_name,current_price,marketSum_value,per_value_str,pbr_value_str))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()
    app.exec_()

 

실행 화면 입니다.

너무 작게 만들었네요...

 

제목은 Text Box라고 지어놓고 필연적으로 Button 사용을 함께 기재하게 되었습니다. ㅎㅎ

이렇게 간단히 출력을 구현하면서 Python이 얼마나 생산성이 좋은 언어인지 다시 한번 느끼게 됩니다.

 

이 글을 보시는 분들께 많은 도움이 되셨으면 좋겠습니다. 혹시라도 더 필요하신 정보가 있다면 댓글로 문의 남겨주세요.

시간 나는대로 확인하고 아는 내용이라면 공유하겠습니다.

반응형