파이썬으로 주사위 게임 만들기 3 (qt designer 연결해서 완료하기)
본문 바로가기
파이썬(Python)/파이썬 기초

파이썬으로 주사위 게임 만들기 3 (qt designer 연결해서 완료하기)

by Squat Lee 2021. 1. 1.

주사위 게임을 만드는 마지막 단계입니다.

 

이전 포스트를 보셔야 이해가 되시기 때문에 못 보셨다면 아래 링크를 클릭하시기 바랍니다.

2020/12/30 - [파이썬/초등 우리 아이 첫 파이썬] - 초등 우리 아이 첫 파이썬 - 주사위 게임 만들기 2(qt designer를 이용하여 시각화 하기)

지난번 포스트까지 잘 따라 오셨다면 파일은 아래와 같이 있을겁니다.

이제 이 파일을 가지고 코드를 작성해 보도록 하겠습니다.

 

파이썬 파일을 하나 생성한 다음 열어보도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from PyQt5.QtWidgets import *
from PyQt5 import uic
import sys
from PyQt5.QtGui import *
import random
 
dice = '.\\dice.ui'
 
class MyWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(selfNone)
        uic.loadUi(dice, self)
 
        self.pushButton.clicked.connect(self.pushButtonClicked)
 
    def pushButtonClicked(self):
        self.qp = QPixmap()
        ran_num = random.randrange(17)
        self.qp.load(f'dice{ran_num}.png')
        self.label.setPixmap(self.qp)
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    Dialog = MyWindow()
    Dialog.show()
    app.exec_()
cs

전체 코드는 위의 그림과 같습니다.

 

일단 똑같이 타이핑 하시고 실행이 되는지 확인해 보시기 바랍니다.

 

좀 어려워 보이는데, 하나씩 설명을 드리도록 하겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from PyQt5.QtWidgets import *
from PyQt5 import uic
import sys
from PyQt5.QtGui import *
 
dice = '.\\dice.ui'
 
class MyWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(selfNone)
        uic.loadUi(dice, self)
 
        self.pushButton.clicked.connect(self.pushButtonClicked)
 
    def pushButtonClicked(self):
        # Push button을 눌렀을때 일어날 일을 입력
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    Dialog = MyWindow()
    Dialog.show()
    app.exec_()
cs

우선 위의 코드가 기본 코드입니다.

 

라이브러리는 똑같이 가져오시면 되고, 밑에 "if __name__ == '__main__':" 여기도 그대로 쓰시면 됩니다.

 

UI를 사용하실 때 공식 같은거라 생각하시면 됩니다.

 

좀 더 궁금하시면 제 블로그에 qt designer 부분을 참고하시기 바랍니다.

 

여기서 중요한 것 몇 가지만 짚고 넘어가겠습니다.

 

우선 아까 저장한 ui 파일을 'dice'라는 변수에 담았습니다. ui 파일 위치가 파이썬 파일과 같은 경로에 있으니 위의 그림과 같이 작성하시거나 dice = 'dice.ui' 라고 적으셔도 됩니다.

 

위에서 지정한 'dice'라는 변수를 load 하는 과정입니다. 한 마디로 컴퓨터 화면에 띄우는 과정이죠.

 

 이전에 만든 pushbutton을 클릭했을 때 이벤트가 일어나도록 하는 코드입니다. "self.pushButtonClicked"는 함수입니다. 이걸 연결하는 과정이라고 생각하시면 됩니다.

 

푸쉬버튼을 클릭했을때 의 함수입니다.

 

QPixmap이라는 함수가 있어야지 이미지를 가져올 수 있습니다. 

Qpixmat을 self.qp라는 객체로 만들어서 load 즉 화면에 보여주는 과정입니다.

 

'ran_num'은 이전 포스트에서 설명했으니 이전포스트를 참고하시기 바랍니다.

 

f'dice{ran_num}.png' 라는 부분이 있는데 dice는 파일의 위치고, 램덤으로 1~6까지 선택되어야 하니 자동으로 파일이름을 바꾸는 코드입니다.

 

f' 를 쓰고 { }를 하면 별도로 +를 사용해서 문자와 변수를 조합하기 보다 더 간단해 집니다.

 

아래는 만든 파일을 구동시키는 영상입니다.

 

파이썬으로 만든 주사위게임 구동영상

갑자기 좀 어려워 진 느낌이 있습니다. 

 

하지만, 모든걸 이해하고 코딩을 하기에는 시간도 오래 걸리고 비효율적인 학습이 될 가능성이 있습니다.

 

일단, 작성하다 보면 감도 오고 궁금하면 그때 구글링을 하는 방법으로 코딩을 공부하는 것이 더욱 효율적이고 지속하기도 쉬울거라 생각합니다.

 

저 또한 독학으로 올해 파이썬을 시작해서 퇴근 후 틈틈히 코딩을 하고 있습니다.

 

프로그램 전공도 아니고, 관련업계에서 일하고 있지도 않지만 나름 활용성이 많아서 재밌게 공부하고 있습니다.

 

우리 아들도 생각보다 잘 따라오고 재밌어 하는 모습을 보니 기록으로 남기기 위해서 포스트를 쓰게 되었습니다.

 

중요한건 일단 한 번 해보는거라 생각합니다. 

 

지금은 이해가 안되도 몇 번 반복하다 보면 이해가 되는 부분이 많더라구요. 

 

그리고 프로그램도 언어라 감각이 중요합니다. 

 

영어를 빨리 배우는 사람들의 특징은 일단 틀려도 말을 계속한다는 점입니다. 예전에 미국 출장 갔을때 한인 교포와 식사를 했는데 이런 얘기를 하시더라구요.

 

"미국 살면서 보니깐 서울대 나온 사람은 영어를 못해요. 본인이 완벽해야 한다는 생각에 말을 쉽게 하지 않으니 늘지도 않아요. 반면에 초등학교 중퇴한 사람은 빨리 배워요. 본인이 틀려도 괜찮다는 생각에 자꾸 말을 하니깐 금방 늘더라구요."

 

일단 부딛혀보고 모르면 찾아보는 방법이 가장 효과적이라고 생각합니다.

728x90
반응형

댓글