반응형

 

아래와 같이 .ui 파일을 Designer.exe 로 열어서 코드를 보려는데 에러가 나면 아래와 같이 해결한다.

 

1. C:\Users\<내User명>\AppData\Roaming\Python\Python37\Scripts 경로에 들어간다.

 

 

2. pyside6-uic.exe 파일을 찾는다.

 

반응형

 

3. 해당 파일을 복사해서 에러메세지의 경로에 이름을 바꿔서 넣어준다.

    하지만 PySide6 폴더까지왔을 때 bin 파일이 없다. 이를 내가 생성한다.

 

4. 그리고 bin 폴더 아래 아까 복사한 .exe 파일을 넣고 이름을 uic로 바꿔준다.

 

5. 이제 내 파이썬 코드를 불러오는 것을 확인할 수 있다.

 

반응형

'파이썬(python) > pySide6 (Py QT)' 카테고리의 다른 글

[PySide6] PyQT 기본 Ui 만들기  (0) 2024.11.05
반응형

 

pyside6 설치를 위한 명령어.

pip install pyside6

 

 

설치하면 아래 경로에 pyside6-designer.exe 파일이 있음. (아래는 버전이 3.11이라서 폴더명이 311임)

C:\Users\<유저이름>\AppData\Local\Programs\Python\Python311\Scripts

이를 실행하여 Ui를 쉽게 배치 가능

 

 

1. 배경만들기.

  1-1. Label 땡겨오고 text 삭제.

  1-2. 크기 키움.

  1-3. 마우스우클릭 - StyleSheet바꾸기

    1-4. 입력하기 : background-color:white;     (흰바탕이 됨)

 

 

 

2. 텍스트 상자 넣기

 

3. 버튼 넣기

 

4. 텍스트 입력상자 넣기 (1줄짜리)

    입력상자 내부에 텍스트 넣기. (우측의 속성을 활용)

 

5. 파이썬 코드 저장

 

6. ui 파일 저장.

 

 

 

반응형
반응형

 

아래 코드는 차트의 아래 부분을 변경함. (x축 값)

 

해당 값을 엑셀로 확인하는 방법.

 

 

반응형

 

코드

import openpyxl
from openpyxl.chart import Reference, BarChart, LineChart
from openpyxl.chart.data_source import AxDataSource, NumRef, StrRef
from openpyxl.chart.axis import ChartLines

path = 'C:\\temp\\test.xlsx'

# 차트를 읽는 함수 (bar와 line이 섞여 있는 차트의 경우)
def read_composite_chart(chart):
    bar_chart = None
    line_chart = None
    for ch in chart._charts:
        if isinstance(ch, BarChart):
            bar_chart = ch
        elif isinstance(ch, LineChart):
            line_chart = ch
    return bar_chart, line_chart

# 차트의 x축값, 카테고리를 출력
def print_chart_categories(chart):
    # Access all chart types within the composite chart
    bar_chart, line_chart = read_composite_chart(chart)

    # Print Bar Chart categories
    if bar_chart and bar_chart.series[0].cat:
        print("Bar Chart Categories:")
        for label in bar_chart.series[0].cat.strRef.strCache.pt:
            # 사용할 수 있는 변수 확인 idx, v
            print(vars(label)) 
            
            # 확인한 변수를 가지고 출력
            print(label.idx)
            print(label.v)

    # Print Line Chart categories
    # if line_chart and line_chart.series[0].cat:
    #     print("Line Chart Categories:")
    #     for label in line_chart.series[0].cat.strRef.strCache.pt:
    #         print(label.v)


# 차트의 카테고리 범위 변경.
def update_chart_categories(chart, sheet, new_range):
    # Access all chart types within the composite chart
    bar_chart, line_chart = read_composite_chart(chart)

    # Update Bar Chart categories
    if bar_chart:
        bar_chart.series[0].cat = AxDataSource(strRef=StrRef(f=new_range))
        print("Bar Chart categories updated.")

    # Update Line Chart categories
    if line_chart:
        line_chart.series[0].cat = AxDataSource(strRef=StrRef(f=new_range))
        print("Line Chart categories updated.")


# 엑셀 파일 열기
wb = openpyxl.load_workbook(path)
sheet = wb['sheet1']  # 원하는 시트 이름으로 변경


# 차트 객체 가져오기 (첫 번째 차트로 가정)
chart = sheet._charts[0]

# 새로운 카테고리 범위 설정 (예: C18:C30)
# 엑셀에서 해당 범위 드레그로 확인해서 복붙하는게 좋음.
new_range = "'Sheet1'!$C$18:$C$20"
update_chart_categories(chart, sheet, new_range)


wb.save(path)
# 엑셀 파일 닫기
wb.close()

 

 

 

 

 

반응형
반응형

 

엑셀의 차트의 카테코리 정보를 출력.

아래와 같이 data가 아닌, categories를 출력하는 코드.

결과

 

반응형

 

코드

import openpyxl
from openpyxl.chart import Reference, BarChart, LineChart

def read_composite_chart(chart):
    bar_chart = None
    line_chart = None

    for ch in chart._charts:
        if isinstance(ch, BarChart):
            bar_chart = ch
        elif isinstance(ch, LineChart):
            line_chart = ch

    return bar_chart, line_chart

def print_chart_series_and_categories(chart):
    # Access all chart types within the composite chart
    bar_chart, line_chart = read_composite_chart(chart)

    # Print Bar Chart series titles and categories
    if bar_chart:
        print("Bar Chart Series Titles:")
        for i, series in enumerate(bar_chart.series):
            barTitle = series.tx.v if series.tx and series.tx.v else series.title
            bar_val_ref = series.val.numRef.f if series.val and series.val.numRef else None
            print(f"title: {barTitle}")
            print(f"Bar Chart Series Values Reference: {bar_val_ref}")

        # Print Bar Chart categories
        if bar_chart.series[0].cat:
            print("Bar Chart Categories:")
            for label in bar_chart.series[0].cat.strRef.strCache.pt:
                print(label.v)

    # Print Line Chart series titles and categories
    if line_chart:
        print("Line Chart Series Titles:")
        for i, series in enumerate(line_chart.series):
            lineTitle = series.tx.v if series.tx and series.tx.v else series.title
            line_val_ref = series.val.numRef.f if series.val and series.val.numRef else None
            print(f"title: {lineTitle}")
            print(f"Line Chart Series Values Reference: {line_val_ref}")

        # Print Line Chart categories
        if line_chart.series[0].cat:
            print("Line Chart Categories:")
            for label in line_chart.series[0].cat.strRef.strCache.pt:
                print(label.v)

# 엑셀 파일 열기
wb = openpyxl.load_workbook('C:\\temp\\test.xlsx')
sheet = wb['Sheet1']  # 원하는 시트 이름으로 변경


# 차트 객체 가져오기 (첫 번째 차트로 가정)
chart = sheet._charts[0]

# 시리즈 와 카테고리 출력
print_chart_series_and_categories(chart)

# 엑셀 파일 닫기
wb.close()

 

 

 

 

 

반응형
반응형

 

 

만약 기존의 엑셀에 있는 Chart 정보를 읽고 출력하는 방법은 아래를 참고.

https://ansan-survivor.tistory.com/1980

 

[Python] 엑셀의 Chart 읽고 Series (legend)의 제목과 range값 출력

결과아래와 같은 그래프가 있을 때 결과가 잘 출력된다.  코드import openpyxlfrom openpyxl.chart import Reference, BarChart, LineChart# bar와 line이 합쳐진 복합 차트.def read_composite_chart(chart): bar_chart = None line_char

ansan-survivor.tistory.com

 

 

아래 코드

import openpyxl
from openpyxl.chart import Reference, BarChart, LineChart, Series
from copy import deepcopy

# 로드 후 결과를 다시 저장할 경로.
DEST_PATH = r"C:\Temp\test.xlsx"

# Bar와 Line형태의 차트를 읽기
def read_composite_chart(chart):
    bar_chart = None
    line_chart = None

    for ch in chart._charts:
        if isinstance(ch, BarChart):
            bar_chart = ch
        elif isinstance(ch, LineChart):
            line_chart = ch
    return bar_chart, line_chart

# 차트의 정보 출력
def print_chart_series(chart):
    # 차트 객체의 모든 차트 유형 접근
    bar_chart, line_chart = read_composite_chart(chart)

    # 바 차트 시리즈의 제목 출력
    if bar_chart:
        print("Bar Chart Series Titles:")
        for i, series in enumerate(bar_chart.series):
            barTitle = series.tx.v if series.tx and series.tx.v else series.title
            bar_val_ref = series.val.numRef.f if series.val and series.val.numRef else None
            print(f"title: {barTitle}")
            print(f"Bar Chart Series Values Reference: {bar_val_ref}")

    # 라인 차트 시리즈의 제목 출력
    if line_chart:
        print("Line Chart Series Titles:")
        for i, series in enumerate(line_chart.series):
            lineTitle = series.tx.v if series.tx and series.tx.v else series.title
            line_val_ref = series.val.numRef.f if series.val and series.val.numRef else None
            print(f"title: {lineTitle}")
            print(f"Line Chart Series Values Reference: {line_val_ref}")


# 접근한 차트의 Series의 Range 정보를 변경
def modify_chart_series_ranges(chart, new_bar_range, new_line_range):
    bar_chart, line_chart = read_composite_chart(chart)

    if bar_chart:
        for i, series in enumerate(bar_chart.series):
            series.val.numRef.f = new_bar_range
            print(f"Updated Bar Chart Series {i+1} to range: {new_bar_range}")

    if line_chart:
        for i, series in enumerate(line_chart.series):
            series.val.numRef.f = new_line_range
            print(f"Updated Line Chart Series {i+1} to range: {new_line_range}")


# 엑셀 파일 열기
wb = openpyxl.load_workbook(DEST_PATH)
sheet = wb['Shee1']  # 원하는 시트 이름으로 변경


# 차트 객체 가져오기 (첫 번째 차트로 가정)
chart = sheet._charts[0]

# 시리즈 제목 출력
print_chart_series(chart)

# 새로운 Range 설정
new_bar_range = "'Shee1'!$M$18:$M$50"
new_line_range = "'Shee1'!$N$18:$N$50"


# 시리즈의 범위 변경
modify_chart_series_ranges(chart, new_bar_range, new_line_range)


# 변경한 정보 저장
wb.save(DEST_PATH)
# 엑셀 파일 닫기
wb.close()

 

 

 

 

반응형
반응형

 

 

결과

아래와 같은 그래프가 있을 때 결과가 잘 출력된다.

 

 

코드

import openpyxl
from openpyxl.chart import Reference, BarChart, LineChart

# bar와 line이 합쳐진 복합 차트.
def read_composite_chart(chart):
    bar_chart = None
    line_chart = None

    for ch in chart._charts:
        if isinstance(ch, BarChart):
            bar_chart = ch
        elif isinstance(ch, LineChart):
            line_chart = ch

    return bar_chart, line_chart

def print_chart_series(chart):
    # 차트 객체의 모든 차트 유형 접근
    bar_chart, line_chart = read_composite_chart(chart)

    # 바 차트 시리즈의 제목 출력
    if bar_chart:
        print("Bar Chart Series Titles:")
        for i, series in enumerate(bar_chart.series):
            barTitle = series.tx.v if series.tx and series.tx.v else series.title
            bar_val_ref = series.val.numRef.f if series.val and series.val.numRef else None
            print(f"title: {barTitle}")
            print(f"Bar Chart Series Values Reference: {bar_val_ref}")

    # 라인 차트 시리즈의 제목 출력
    if line_chart:
        print("Line Chart Series Titles:")
        for i, series in enumerate(line_chart.series):
            lineTitle = series.tx.v if series.tx and series.tx.v else series.title
            line_val_ref = series.val.numRef.f if series.val and series.val.numRef else None
            print(f"title: {lineTitle}")
            print(f"Line Chart Series Values Reference: {line_val_ref}")

# 엑셀 파일 열기
wb = openpyxl.load_workbook('C:\\_workspace\\_SS_MX\\_LicenseUsageCheck\\Siemens_License_Report_Server_Template.xlsx')
sheet = wb['Sheet1']  # 원하는 시트 이름으로 변경

# 차트 객체 가져오기 (첫 번째 차트로 가정)
chart = sheet._charts[0]

# 시리즈 제목 출력
print_chart_series(chart)

# 엑셀 파일 닫기
wb.close()

 

읽은 차트의 Series를 수정하려면 아래를 참고.

https://ansan-survivor.tistory.com/1981

 

[Python] 엑셀 Chart Series (legend)의 range값 변경

만약 기존의 엑셀에 있는 Chart 정보를 읽고 출력하는 방법은 아래를 참고.https://ansan-survivor.tistory.com/1980 [Python] 엑셀의 Chart 읽고 Series (legend)의 제목과 range값 출력결과아래와 같은 그래프가 있을

ansan-survivor.tistory.com

 

 

 

 

반응형
반응형

 

1. VSCode를 실행하여 Python을 설치

 

2. 새로운 파일 확장명 .py 로 만들기.

 

 

반응형

 

3. 해당 파일을 VScode로 드레그해서 열고, 코드 작성.

 

4. 마우스 우클릭 후 - Python 실행 - 터미널에서 Python 파일 실행

 

아래 터미널이 생성되어 바로 실행을 확인 할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

파이썬 코드 작성시 유용한 파이참. 개발환경 구축은 아래를 참고.

https://ansan-survivor.tistory.com/134

 

Pycharm(파이참)을 이용하여 Python 개발환경 구축하기

파이참은 파이썬 개발을 편리하게 하는 많은 기능을 제공하는 툴이다. https://www.jetbrains.com/pycharm/download/#section=windows Download PyCharm: Python IDE for Professional Developers by JetBrains Download the latest version of P

ansan-survivor.tistory.com

 

설치후 처음 상태. (죄다 영어다)

구축 후, 언어설정을 한글로 하면 편리하다.

방법은 아래와 같다.

 

1. File - Settings

 

 

2. Plugins - 검색창에 "Korean" 입력 - Install 설치

 

 

3. 설치가 완료되면 Restart IDE가 뜬다. 이를 클릭

반응형

 

4. Restart으로 툴을 껐다가 켠다.

 

 

결과

 

반응형
1234···7

+ Recent posts