Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 |
Tags
- suninatas
- 여행
- 연구모임
- 불법유통
- MITRE ATT&CK
- 기타정보
- 정보보안
- 화학물질안전원
- 웹 해킹 입문
- 불법유통근절
- PHP
- webhacking
- 경기팀
- UKPT
- 도구모음
- codeup
- 파이썬
- 화학물질
- HTML
- nurisec
- Service
- 12기
- 대외활동
- UKPT level
- 화학물질불법유통온라인감시단
- 국가기록원
- 프로젝트
- Los
- 국가정보원
- 국정원
Archives
- Today
- Total
agencies
파이썬 프로그래밍을 통한 ben.exe 프로그램 제작하기 본문
이번 시간에는 추억의 ben.exe 프로그램을 제작하려고 합니다.
https://namu.wiki/w/Ben%20drowned
이미지 출처(김재민) 님
준비물
- ben drowned (mp3)
- ben image (webp)
- winrar (exe)
- python (script)
* 이미지와 mp3를 base64로 인코딩하고, 프로그램 동작 시 디코딩해서 사용할 수 있습니다.
하지만 이번 방식은 이미지와 소리파일이 실행파일과 동일한 경로에 있어야 합니다.
프로그램 설명
1. 파일을 실행하면 ben 이미지가 화면 중앙에 나타납니다.
2. 노래가 반복적으로 실행됩니다.
3. ben 이미지를 클릭하면 메시지박스(알림창)이 나타납니다.
소스코드
from tkinter import Tk, Button, Canvas
from PIL import Image, ImageTk
import pygame
import threading
import tkinter.messagebox as messagebox
def display_image(image_path):
# Tkinter 창 생성 (닫기 버튼 제거)
root = Tk()
root.overrideredirect(True)
# 창을 항상 위에 유지
root.wm_attributes("-topmost",1)
# 이미지 열기
image = Image.open(image_path)
# 이미지 리사이즈
resized_image = image.resize((400, 400))
# Tkinter용 이미지로 변환
photo = ImageTk.PhotoImage(resized_image)
# Canvas 생성
canvas = Canvas(root, width=400, height=400)
canvas.pack()
# 이미지를 Canvas에 배치 nw(좌측상단 모서리 기준 배치)
canvas.create_image(0, 0, anchor="nw", image=photo)
# 창 크기 설정 (화면 중앙으로 배치)
w=400
h=400
x = (root.winfo_screenwidth() - w) // 2
y = (root.winfo_screenheight() - h) // 2
root.geometry(f"{w}x{h}+{x}+{y}")
def play_music():
# 노래 재생
pygame.mixer.init()
pygame.mixer.music.load("ben.mp3")
pygame.mixer.music.play(-1)
# 노래 재생을 위해 별도의 스레드로 실행
m_thread = threading.Thread(target=play_music)
m_thread.start()
def sh_msgbox(event):
# 클릭 이벤트 (메시지 박스 표시)
messagebox.showinfo("BEN","You've Met with a terrible fate haven't you?")
# Tkinter 창에 클릭 이벤트 바인딩
root.bind("<Button-1>", sh_msgbox)
# Tkinter 창 실행
root.mainloop()
# 이미지 파일 경로
image_path = "ben.webp"
# 이미지 표시
display_image(image_path)
제작 방법
1. cmd창을 열어 ben.py를 exe로 변환합니다.
pyinstaller --onefile --noconsole --add-data "ben.webp;." --add-data "ben.mp3;." ben.py
2. 생성된 폴더(dist)에 들어가면 ben.exe파일이 생성됩니다.
3. winrar프로그램을 실행하여 3개의 파일을 병합합니다.
3개의 파일을 모두 선택한 후 add를 누릅니다
create sfx archive에 체크한 후
advanced 탭의 sfx options를 선택합니다
update탭에서 위와 같이 설정합니다
ben.sfx.exe가 실행된 화면
'Ⅰ. 프로그래밍' 카테고리의 다른 글
리눅스 기초 셸 스크립트 및 명령어 (0) | 2024.02.15 |
---|---|
파이썬 프로그래밍 (터틀그래픽) (0) | 2024.01.29 |
파이썬 프로그래밍 (0) | 2024.01.29 |
파이썬 해킹 입문 (해킹기술 및 개요) (0) | 2024.01.29 |
파이썬 키보드 후킹 (0) | 2024.01.29 |