오늘은 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에 그래프를 그리는 부분이다.
단편적으로 가져온 전적에서 승률을 보여주기에는 원그래프가 적당하다고 판단하여 원그래프로 작성했다.