Skip to content

Latest commit

 

History

History
59 lines (44 loc) · 2.58 KB

211208.md

File metadata and controls

59 lines (44 loc) · 2.58 KB

Day 64

파이썬으로 배우는 게임 개발 입문편

프로젝트 하나를 마친 겸 쉬어가는 시간으로 이 책을 공부하려고 한다.

이 책을 GUI를 tkinter를 사용했는데 그대로 따라하는 것보다 PyQT로 변환하면서 하면 이전에 문제가 되었던 PyQT 사용에 미숙했던 부분을 보완할 수 있을 것이라고 생각했다.

일단 오늘은 간단하게 제비뽑기 게임을 만들었다.

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
import random

class WindowClass(QWidget): # QMainWindow 상속과 QWidget 상속의 차이는 상태바, 메뉴바 같은 상태 표시 줄이 정의 되었는가의 차이
    def __init__(self):
        super().__init__()
        self.setupUI()
        self.show()

    def setupUI(self):
        self.setGeometry(400, 600, 800, 600)
        self.setWindowTitle('제비뽑기')

        oImage = QImage('Python_workspace\mini_game\image_dir\miko.png')
        sImage = oImage.scaled(QSize(800,600))
        palette = QPalette()
        palette.setBrush(10, QBrush(sImage))
        self.setPalette(palette)

        self.result = QLabel('??', self) # self를 안 넣으면 화면에 안 생기는데 아마도 layout에 추가 안하고 직접 추가해서 이런 차이가 생기는 듯 하다.
        self.button = QPushButton('제비뽑기', self)
        self.result.setFont(QFont('Times New Roman', 110))
        self.result.resize(400,200)
        self.result.move(380, 60)
        self.button.resize(200, 100)
        self.button.move(360, 400)

        # 이벤트 추가
        self.button.clicked.connect(self.update_luck)

    def update_luck(self):
        self.result.setText(random.choice(['대길','중길','소길','흉','대흉']))





if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_W = WindowClass()
    sys.exit(app.exec_())

이 부분을 짜면서 알게된 점이 몇가지 있다.
이미지를 프로그램이 못 찾아서 뭐가 문제인가 했는데 상대 경로로 작성을 하니까 이 프로그램이 있는 부분이 아닌 VScode의 터미널이 위치한 상위 디렉터리를 기준으로 상대 경로로 찾아서 못 찾고 있었던 것이다.

추가로 QMainWindow를 상속하는 경우와 QWidget을 상속하는 경우의 차이가 무엇인지도 궁금했는데, 간단히 말하면 QMainWindow는 QWidget에 없는 상태 표시줄을 사용할 수가 있다는 것이다.

마지막으로 layout에 위젯을 추가하지 않고 바로 추가하려면 괄호 안에 self를 추가로 넣어줘야 한다.