Skip to content

Latest commit

 

History

History
74 lines (63 loc) · 2.83 KB

211130.md

File metadata and controls

74 lines (63 loc) · 2.83 KB

Day 58

Riot Open API 사용

project repository

오늘은 UI를 그냥 python 코드로 교체하고, 승률을 계산하고, 원그래프로 그려주는 부분을 만들었다.

def calculate_win_rate(self):
    total_win = 0
    for i in self.match_info_dict:
        if self.game_detail_data[i][self.summoner_info['name']]['match_result']:
            total_win += 1
    self.win_rate = total_win / len(self.match_list)

아주 간단한 승률 계산 함수이다.
이것을 만들면서 게임 정보 전처리 함수와 이 함수를 get_match_information 함수 안에 넣어서 정보를 가져옴과 동시에 처리되도록 변경하였다.

def setupUI(self):
    #self.setupUi(self)
    self.setGeometry(600, 200, 1200, 600)
    self.setWindowTitle('LoL 전적 검색기')
    
    self.SummonerName = QLineEdit()
    self.ResetButton = QPushButton('초기화')
    self.SearchButton = QPushButton('전적 검색')
    self.MasteryButton = QPushButton('숙련도 확인')
    self.ResultTable = QTableWidget()
    self.StatusLabel = QLabel()

    # 이벤트 추가
    self.SearchButton.clicked.connect(self.display_match)
    self.MasteryButton.clicked.connect(self.display_mastery)

    # 그래프 캔버스
    self.fig = plt.Figure()
    self.canvas = FigureCanvas(self.fig)      
    
    # 좌측 레이아웃
    leftLayout = QVBoxLayout()
    leftLayout.addWidget(self.SummonerName)
    leftLayout.addWidget(self.ResultTable)
    

    # 우측 레이아웃
    rightLayout = QVBoxLayout()
    rightLayout_Button = QHBoxLayout()
    rightLayout_Fig = QVBoxLayout()
    rightLayout_Button.addWidget(self.ResetButton)
    rightLayout_Button.addWidget(self.SearchButton)
    rightLayout_Button.addWidget(self.MasteryButton)
    rightLayout_Fig.addWidget(self.StatusLabel)
    rightLayout_Fig.addWidget(self.canvas)
    rightLayout.addLayout(rightLayout_Button)
    rightLayout.addLayout(rightLayout_Fig)

    # 전체 레이아웃
    layout = QHBoxLayout()
    layout.addLayout(leftLayout)
    layout.addLayout(rightLayout)
    
    self.setLayout(layout)

이 부분이 ui를 파이썬 코드로 대체한 부분이다.
이렇게 한 이유는 내가 GUI 환경인 QT designer로 하는 것 보다 코드로 조정하고 자동으로 배치되는 것이 더 배치가 잘되는 것 같아서이다.

def display_figure(self):
    ax = self.fig.add_subplot()
    ax.pie(x = [self.l.win_rate, 1 - self.l.win_rate], labels = ['Win', 'Lose'], autopct='%.2f%%', colors = ['skyblue','lightcoral'], startangle = 90)
    ax.axis('equal')
    self.canvas.draw()

이 부분이 setUI 부분에서 만든 canvas에 그래프를 그리는 부분이다.
단편적으로 가져온 전적에서 승률을 보여주기에는 원그래프가 적당하다고 판단하여 원그래프로 작성했다.