(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 – 2 (pyuic5 설치하기)

<(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 – 2 (pyuic5 설치하기)>

우리가 익숙하게 보는 프로그램들은 모두 GUI가 있다

GUI가 뭐냐하면 그래픽 유저 인터페이스라고도 한다

프로그램을 실행하면 보게 되는 화면이라고 이해하면 된다

저번에 만들었던 코드는 그냥 텍스트로만 구현이 가능하기때문에 아무래도 실효성이

많이 떨어진다..

<이전 내용>

그래 모든걸 정말 AI에게 맡겨보는 거라고 생각하고 속는셈 치고

GUI로 만들건데 코드 만들어달라고 했더니 답변은 다음과 같았다

(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 - 2 (pyuic5 설치하기)
PyQt5 ? Qt designer?

웹에서 알아본 결과 PyQt는 gui 개발시 사용되는 프로그램같은것이고

Qt 디자이너는 이걸 활용하는 개발 프로그램 같은것이였다

알아낸것 까지는 좋지만 그래서 이걸 어떻게 설치하고 사용하느냐는

이제 또 사람손에 달린 일이였다

AI로 반발경도 추정압축강도 프로그램 GUI시도

Qt Desginer 설치

먼저 프로그램들이 깔려있어야 뭐라도 할것 아닌가…?

구글에서 검색해보니 몇가지 설치방법이 존재했는데

그중에서 나는 Anaconda 라는 프로그램을 사용해서 Qt desginer를 설치했다

아나콘다는 일종의 개발도구를 모아둔 플랫폼 프로그램이였는데

여기서 가이드에 따라 몇가지를 따라 설치했더니 큐티디자이너도

동봉되어있었다.

<참고했던 설치안내 블로그>

설치는 해당 내용을 따라가니 어렵지 않았다

컴퓨터에 뭔가를 설치하는게 어려울 나이나 세대는 아닌만큼

그냥 넥스트 넥스트 하다 보면 되는것이였는데

이제 가이드에 따라서 Qt 디자이너를 실행시키기만 하면 되는데

이 실행방법이 익숙치가 않았다

방법은 이러하다

(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 - 2 (pyuic5 설치하기)
아나콘다 프롬프트를 킨다
(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 - 2 (pyuic5 설치하기)
마음이 급해 오타가 났다 “designer” 라고 입력
(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 - 2 (pyuic5 설치하기)
이렇게 Qt designer 가 실행된다

나는 코딩전문 블로거가 아니기 때문에 이 Qt 디자이너의 정확한 사용방법은 아직 알려드릴수 없다

나도 모르기 때문이다

나의 시행착오와 복기를 위해 작성하는 부분도 있기때문에

….. 도움이 안되서 미안하다

파이썬 코드를 Qt 디자이너에서 불러오기

좋다 Qt 디자이너를 설치했으니 이제 만들기만 하면 확인해 볼수 있을것 아닌가?

하지만 문제가 좀있었다

  1. qt 디자이너에서 저장된 파일은 ui 라는 확장자를 가진다
  2. 이걸 py 라는 파이썬 확장자로 수정해주는 과정이 필요하다
  3. 이 과정에서 pyuic5 라는 도구가 필요하다

그렇다면 이제 pyuic5 설치와 사용법 숙지만 하면 되는것일까?

(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 - 2 (pyuic5 설치하기)
폼 – 파이썬 코드보기
(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 - 2 (pyuic5 설치하기)
저장을 누르면 ui 확장자로 저장된다
(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 - 2 (pyuic5 설치하기)
위의 py 파일은 나의 결과물.. ui파일로 저장된다

ui 파일로 저장된 파이썬 코드는 내가 수정을 할 수 없기 때문에

이걸 파이썬 코드로 변환하는 과정이 필수적인 것이였다

Ui 확장자를 py 확장자로 변환하는법

변환하는법도 참 신기했는데

  1. Ui 파일이 있는 폴더를 열고
  2. 폴더의 시프트 + 우클릭으로 파워쉘을 킨다
  3. pyuic5 -x 변환하고자하는 파일명.ui -o 변환되서 나올 파일명.py
  4. 위의 코드를 파워쉘에 입력한다
  5. 변환된다

근데 안된다…?

(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 - 2 (pyuic5 설치하기)
요컨대 넌 pyuic5 가 없어요~

나는 pyuic5가 없기때문에 실행할수 없다는 결과를 받았다.

그럼 다시 돌아가서 pyuic5 설치하면 될일이 아닌가?

누가 나의 AI로 반발경도 추정압축강도 프로그램을 만들 열정을 막을수 있을까?

Pyuic5 설치법

먼저 이 설치법에 대한 과정을 문자로 정리하자면 다음과 같다

  1. 파이썬을 설치한다
  2. CMD창에서 pip install pyqt5 를 입력한다
  3. 알아서 pyuic5 가 설치된다

이 쉬운과정을 잘 몰라서 얼마나 헤맸는지 모르겠다

일단은 파이썬을 설치해야한다

파이썬은 개발언어인데 이 모든 과정을 돌아가게해주는 영어같은 존재이다

<파이썬 설치>

여기서 그냥 다운로드 후 설치하시면 된다

(24.03) AI로 반발경도 추정압축강도계산 프로그램 만들기 - 2 (pyuic5 설치하기)
다운로드 버튼이 크게 있다

설치가 완료되셨다면 이제 CMD창을 열면 되는데

pyuic5 설치
왼쪽아래 검색창에 그냥 CMD라고 치면 나온다

그리고 cmd 창에

pip install pyqt5

라고 입력하면 된다 설마 다른 문장 껴있다고 잘못쓸까봐

노파심에 문장을 떼내었다

pyuic5 설치
그러면 이렇게 pyqt5 가 설치된다!

“Pyqt5 가 설치되었다면 pyuic5 설치도 완료된것이다”

위로 다시 돌아가보자

이제 다시 pyuic5 -x 변환하고자하는 파일명.ui -o 변환되서 나올 파일명.py

를 실행해보자

pyuic5 설치
에러가 안뜬다….!!!

이제 에러가 안뜨기 때문에 py 파일이 변환된것을 확인해볼 차례이다

pyuic5 설치
성공!

이렇게 하면 py파일 생성까지 완료된것이다

정리

요컨대 Qt desginer를 실행하기 위해서 Anaconda를 설치했고

PyQt5 를 설치하기 위해 Python 을 설치했다

그리고 pyuic5 설치는 PyQt5를 설치하면 같이 설치된다

pyuic5 설치는 ui파일을 py파일로 바꾸기 위한것이고

py파일로 바꾸는 이유는 Chat gpt에게 받은 코드를 넣기 위해서이다

이번에는 파일 변환만 가지고 반나절을 꼬박 소모했다.

나같이 헤메는 힘든 사람이 없길 바라며 글로 남겨보았다

그리고 저번에 만들고 있던 반발경도 압축강도시험 코드는 타격각도, 습윤보정을 포함해서

조금더 완성품에 가깝에 만들어 두었다

gui로 만들수 있는 코드 말고 이전에

그냥 코랩에서 사용가능한 코드를 이번에 새로운 버전으로 올려두겠다

<습윤 여부가 업데이트 된 코드>

import random
from datetime import datetime

def calculate_adjustment_factor(days_since_input):
    if days_since_input <= 0:
        return 1
    elif days_since_input <= 100:
        return 1 - days_since_input * 0.0005
    elif days_since_input <= 300:
        return 0.78 - (days_since_input - 100) * 0.00008
    elif days_since_input <= 500:
        return 0.7 - (days_since_input - 300) * 0.00006
    elif days_since_input <= 1000:
        return 0.67 - (days_since_input - 500) * 0.00002
    elif days_since_input <= 3000:
        return 0.65 - (days_since_input - 1000) * 0.00002
    else:
        return 0.63

def calculate_impact_angle_correction(impact_angle, R):
    return impact_angle / 90 * (25.3 + (0.08 * (R - 30)) - 30)

def main():
    # 사용자로부터 날짜 입력 받기
    input_date_str = input("날짜를 입력하세요 (YYYYMMDD 형식 예시:20240101): ")
    input_date_obj = datetime.strptime(input_date_str, "%Y%m%d")
    # 현재 날짜 계산
    current_date = datetime.now()
    # 날짜 차이 계산
    days_since_input = (current_date - input_date_obj).days

    # 재령보정계수 값 계산
    adjustment_factor = calculate_adjustment_factor(days_since_input)

    # 결과 출력
    print("날짜 입력:", input_date_str)
    print("재령보정계수:", round(adjustment_factor, 2))

    # 사용자로부터 R 값 입력 받기
    R = float(input("R값을 입력하세요: "))

    # 사용자로부터 습윤 여부 입력 받기
    moisture_condition = input("습윤 여부를 입력하세요 (습윤: yes, 건조: no): ")
    moisture_correction = 5 if moisture_condition.lower() == "yes" else 0

    # Ro 값 계산
    Ro = R + moisture_correction

    # 사용자로부터 부재의 시험위치 입력 받기
    item_name = input("부재의 시험위치를 입력하세요: ")

    # 사용자로부터 타격각도 입력 받기
    impact_angle = float(input("타격각도를 입력하세요 (하향 -90, 상향 90): "))

    # 타각보정계수 계산
    angle_correction = calculate_impact_angle_correction(impact_angle, R)

    # 입력된 값에 대한 식 계산
    calculated_value_1 = -18.0 + (1.27 * Ro)
    calculated_value_2 = ((7.3 * Ro) + 100.0) * 0.098

    # 결과 값에 재령보정계수 적용
    adjusted_calculated_value_1 = round(calculated_value_1 * adjustment_factor, 2)
    adjusted_calculated_value_2 = round(calculated_value_2 * adjustment_factor, 2)

    # 랜덤 숫자 생성을 위한 리스트
    random_numbers = []

    # 20개의 랜덤 숫자 생성
    for _ in range(20):
        # 입력된 R 값의 10% 범위 내에서 랜덤한 숫자 생성
        random_number = random.uniform(R * 0.9, R * 1.1)
        random_numbers.append(round(random_number, 1))

    # 결과 출력
    print("Ro 값:", Ro)
    print("항목 이름:", item_name)
    print("타격각도:", impact_angle)
    print("타격각도 보정계수:", round(angle_correction, 2))
    print("입력된 값에 대한 일본재료학회 결과값:", round(calculated_value_1, 2),"MPa")
    print("입력된 값에 대한 일본재료학회 추정압축강도:", adjusted_calculated_value_1, "MPa")
    print("입력된 값에 대한 일본건축학회 결과값:", round(calculated_value_2, 2),"MPa")
    print("입력된 값에 대한 일본건축학회 추정압축강도:", adjusted_calculated_value_2, "MPa")
    print("생성된 타격 반발경도값:", random_numbers)

if __name__ == "__main__":
    main()