PyQt에서 입/출력 수단은 많지만 우리에게 익숙한 형태는 Text Box 이지 않을까 합니다.
https://marketward.tistory.com/10에서 UI를 실행시켜 보셨다면 이제 Text Box를 구현해보도록 하겠습니다.
UI를 우선 만듭시다. Qt Designer를 실행 시킵니다.
1. 버튼 없는 UI를 선택합니다.
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이 얼마나 생산성이 좋은 언어인지 다시 한번 느끼게 됩니다.
이 글을 보시는 분들께 많은 도움이 되셨으면 좋겠습니다. 혹시라도 더 필요하신 정보가 있다면 댓글로 문의 남겨주세요.
시간 나는대로 확인하고 아는 내용이라면 공유하겠습니다.
'Python > PyQt' 카테고리의 다른 글
[Python/파이썬] PyQt5 Combo Box 사용하기 (0) | 2024.09.22 |
---|---|
[Python/파이썬] PyQt5, PyQt5-Tools로 쉬운 GUI 만들기 (0) | 2022.11.18 |