설명 예정
코드
import sys
from random import randint
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
# from PyQt5.QtWid
class MainWindow(QDialog):
def __init__(self):
super().__init__()
self.setup_ui()
def setup_ui(self):
main_layout = QVBoxLayout() #메인 레이아웃
user_choose_layout = QHBoxLayout() #버튼 담길 레이아웃
#타이틀 지정
title = QLabel("허접한 가위바위보")
title_font = title.font()
# title_font.setPointSize(25)
title_font = QFont("나눔고딕코딩", 25, QFont.Bold)
title.setFont(title_font)
title.setAlignment(Qt.AlignCenter)
# 이미지 불러오기 및 이미지 사이즈 강제조정
rock_image = QPixmap('주먹.png')
rock_image = rock_image.scaled(50,50,Qt.IgnoreAspectRatio)
scissor_image = QPixmap('가위.png')
scissor_image = scissor_image.scaled(50, 50, Qt.IgnoreAspectRatio)
paper_image = QPixmap('보.png')
paper_image = paper_image.scaled(50, 50, Qt.IgnoreAspectRatio)
# 가위바위보 버튼 , 종료 버튼
self.scissor_btn = QPushButton('가위')
self.rock_btn = QPushButton('바위')
self.paper_btn = QPushButton('보')
quit_btn = QPushButton("종료하기", self)
#버튼 이름 숨기기
# self.scissor_btn.setProperty("orgtext", scissor_btn)
# self.scissor_btn.setText("가위")
#종료버튼 눌렀을 때 종료하기
quit_btn.clicked.connect(self.close)
#버튼에 이미지 넣기 및 버튼 사이즈 조정
self.scissor_btn.setIcon(QIcon(scissor_image))
self.scissor_btn.setIconSize(QSize(70, 70))
self.rock_btn.setIcon(QIcon(rock_image))
self.rock_btn.setIconSize(QSize(70, 70))
self.paper_btn.setIcon(QIcon(paper_image))
self.paper_btn.setIconSize(QSize(70, 70))
#버튼 누르면 이벤트
self.scissor_btn.clicked.connect(self.game_play)
self.rock_btn.clicked.connect(self.game_play)
self.paper_btn.clicked.connect(self.game_play)
#화면 나올 창
# self.image = QLabel()
#레이아웃 담아주기
user_choose_layout.addWidget(self.rock_btn)
user_choose_layout.addWidget(self.paper_btn)
user_choose_layout.addWidget(self.scissor_btn)
main_layout.addWidget(title)
# main_layout.addWidget(image)
main_layout.addLayout(user_choose_layout)
main_layout.addWidget(quit_btn)
self.setWindowTitle("가위바위보게임")
self.setLayout(main_layout)
self.show()
def game_play(self):
# global com_guess
random_num = randint(1, 3)
print(random_num)
if random_num == 1:
com_guess = '가위'
elif random_num == 2:
com_guess = '바위'
if random_num == 3:
com_guess = '보'
reply = QMessageBox() #응답이 받아질 메세지박스
reply.setWindowTitle('결과는!') #메세지박스 상단 텍스트
sender = self.sender() #눌린 버튼을 가져옴
btn_name = sender.text() #눌린 버튼의 이름을 가져옴
if (random_num == 1 and btn_name == '가위') or \
(random_num == 2 and btn_name == '바위') or \
(random_num == 3 and btn_name == '보'):
# draw_img = QPixmap('yelled_pingu.jpg')
# draw_img.
reply.setIconPixmap(QPixmap('yelled_pingu.jpg'))
reply.setText(f"비겼습니다! 컴퓨터는 {com_guess}를 냈습니다.")
reply.exec_()
elif (random_num == 1 and btn_name == '바위') or \
(random_num == 2 and btn_name == '보') or \
(random_num == 3 and btn_name == '가위'):
reply.setIconPixmap(QPixmap('smile_pingu.jpg'))
reply.setText(f"이겼습니다! 컴퓨터는 {com_guess}를 냈습니다.")
reply.exec_()
else:
reply.setIconPixmap(QPixmap('angry_pingu2.png'))
reply.setText(f"졌습니다! 컴퓨터는 {com_guess}를 냈습니다.")
reply.exec_()
def closeEvent(self, event):
# 종료 대화상자 표시
reply = QMessageBox.question(self, '종료확인', '종료하시겠습니까?',
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
# '예' 버튼을 클릭하면 종료
event.accept()
else:
# '아니오' 버튼을 클릭하면 이벤트 무시
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MainWindow()
# MainWindow.show()
sys.exit(app.exec_())
실행화면
'개발공부 > Pyqt 파이큐티' 카테고리의 다른 글
[PyQt] 파이큐티와 qt designer활용해 행맨 만들기 (0) | 2023.05.05 |
---|---|
[PyQt] 파이큐티 콘솔창에서 다운로드하기 (0) | 2023.05.04 |
[파이큐티] 간단한 단어조합표 만들기 (0) | 2023.05.04 |
[파이큐티] 클릭시 버튼 이름 연결하기(.sender(), .text()) (1) | 2023.05.04 |
[파이큐티] qt designer 사용하기 (0) | 2023.05.03 |