程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

10 Python 用 turtle tkinter PIL 開始我們的故事

編輯:Python

----------七夕就要來了,不論你是不是一個人,都祝你開心快樂啊-------------

效果:

 

完整代碼獲取,以及修改免費幫助:

點擊鏈接加入群聊【懶笑翻-Python學習交流】:https://jq.qq.com/?_wv=1027&k=gBTObhx8

完整代碼實現:

"""
* @Author: xiaofang
* @Date: Create in 14:57 2022/8/3
* @Description: 我們的故事的開始
"""
"""
建議把兩人合照命名為 couple.png 本代碼中有3處用到了圖片,通過調用showImg方法,也可以在調用方法的地方修改名稱也可
"""
from turtle import *
import tkinter as tk
from PIL import Image, ImageTk
font = ("華文行楷", 17, "normal") # 正文格式
title = ("華文行楷", 30, "normal") # 標題格式
render = {}
color = 'pink'
# 載入圖片
def showImg(face, name, side=tk.TOP, rate=1.0):
global render
load = Image.open('{}.png'.format(name))
size = (int(load.size[0] * rate), int(load.size[1] * rate))
load = load.resize(size)
render[name] = ImageTk.PhotoImage(load)
img = tk.Label(face, image=render[name]).pack(side=side)
# 啟動頁面
class Init():
def __init__(self, master):
self.master = master
self.master.config(width=600, height=400)
self.face = tk.Frame(self.master)
self.face.pack()
text = '\n\n\n寶貝准備好開啟我們的故事了嗎\n\n'
tk.Label(self.face, text=text, font=title).pack()
tk.Button(self.face, text="開啟我們的故事", font=font, command=self.next, bg=color).pack()
def next(self):
self.face.destroy()
StoryBegin(self.master)
# 正文頁
# 開始頁
class basedesk():
def __init__(self, master):
self.root = master
self.root.config()
self.root.title('開啟我們的故事')
self.root.geometry('600x450')
self.root.resizable(False, False)
Init(self.root)
# 開始頁
# 故事開始
class StoryBegin():
def __init__(self, master):
self.master = master
self.master.config(width=600, height=400)
self.face = tk.Frame(self.master)
self.face.pack()
text = '\n2020年年5月20日\n我們的故事開始\n' \
'還記得我們發的官宣說說嗎?\n' \
'還我們一起看電影拍的照片'
tk.Label(self.face, text=text, font=font).pack()
tk.Button(self.face, text="繼續我們的故事", command=self.next, bg=color).pack(side=tk.BOTTOM)
showImg(self.face, 'couple', rate=1.5)
def next(self):
self.face.destroy()
Milktea(self.master)
# 測試頁1
class Milktea():
def __init__(self, master):
self.master = master
self.master.config(width=600, height=400)
self.face = tk.Frame(self.master)
self.face.pack()
text = '\n隨堂小測驗開始~\n' \
'還記得我最喜歡什麼顏色嗎?'
tk.Label(self.face, text=text, font=font).pack()
self.namestr = tk.StringVar()
tk.Entry(self.face, textvariable=self.namestr, font=font).pack(side=tk.TOP)
tk.Button(self.face, text="確定", command=self.judge, bg=color).pack(side=tk.TOP)
def judge(self):
if self.namestr.get() != '藍色':
tk.messagebox.askokcancel(title='警告', message='回答錯誤!\n提示:輸入兩個字哦~')
else:
self.story_continue()
def story_continue(self):
text = '\n回答正確~\n' \
'我們都喜歡這個顏色\n' \
'你說藍色\n' \
'還得是淡藍色\n' \
'當然我知道我的喜好你都記得\n'
tk.Label(self.face, text=text, font=font).pack()
tk.Button(self.face, text="繼續我們的故事", command=self.next, bg=color).pack(side=tk.TOP)
def next(self):
self.face.destroy()
Christmas(self.master)
# 測試頁2-1
class Christmas():
def __init__(self, master):
self.master = master
self.master.config(width=600, height=400)
self.face = tk.Frame(self.master)
self.face.pack()
text = '\n根據圖片,你能看出這是哪一天嗎?'
tk.Label(self.face, text=text, font=font).pack()
self.namestr = tk.StringVar()
tk.Entry(self.face, textvariable=self.namestr, font=font).pack(side=tk.TOP)
tk.Button(self.face, text="確定", command=self.judge, bg=color).pack(side=tk.TOP)
showImg(self.face, 'couple', rate=1.5)
def judge(self):
if self.namestr.get() != '20200520': # 時間修改在這裡
tk.messagebox.askokcancel(title='警告', message='回答錯誤!\n提示:輸入格式比如:20200520')
else:
self.next()
def next(self):
self.face.destroy()
Christmas2(self.master)
# 測試頁2-2
class Christmas2():
def __init__(self, master):
self.master = master
self.master.config(width=600, height=400)
self.face = tk.Frame(self.master)
self.face.pack()
text = '\n回答正確~\n是2020年05月20日\n' \
'當然是我們在一起的第一天啦!'
tk.Label(self.face, text=text, font=font).pack()
text = '我們還拉了勾,\n' \
'要在一起一輩子不分開的'
tk.Label(self.face, text=text, font=font).pack()
tk.Button(self.face, text="繼續我們的故事", bg=color, command=self.next).pack(side=tk.TOP)
def next(self):
self.face.destroy()
Heart(self.master)
# 結尾頁
class Heart():
def __init__(self, master):
self.master = master
self.master.config()
self.canvas = tk.Canvas(self.master, width=600, height=450)
self.canvas.pack()
self.tu = RawTurtle(self.canvas)
self.tu.hideturtle()
self.tu.home()
self.tu.clear()
self.tu.speed(0)
self.tu.screen.delay(0)
self.person(0, 50)
s = '親愛的寶貝:\n' \
' 今天不是什麼特別的日子,\n' \
' 沒有什麼日子需要賦予特殊意義,\n' \
' 因為我時時愛你,\n' \
' 不需要在某個節點才袒露心意。'
self.word(s, -100, -150)
def go_to(self, x, y):
self.tu.penup()
self.tu.goto(x, y)
self.tu.down()
def ring(self, a, b, c, d):
for i in range(a):
self.tu.forward(b)
if d == 'right':
self.tu.right(c)
else:
self.tu.left(c)
def heart(self, x, y, size):
self.go_to(x, y)
self.tu.left(150)
self.tu.begin_fill()
self.tu.forward(51 * size)
self.ring(150, size, 0.3, 'right')
self.ring(210, size, 0.786, 'right')
self.tu.left(120)
self.ring(210, size, 0.786, 'right')
self.ring(150, size, 0.3, 'right')
self.tu.forward(51 * size)
self.tu.end_fill()
def person(self, xbias, ybias):
# 頭部
self.tu.color('black')
self.go_to(-228, 72 - ybias)
self.tu.pensize(3)
self.tu.left(150)
self.ring(350, 1, 0.8, 'right')
# 手臂
self.tu.left(150)
self.tu.forward(70)
self.tu.left(90)
self.tu.forward(10)
self.ring(200, 0.1, 0.9, 'right')
self.tu.forward(10)
self.tu.left(90)
self.tu.forward(20)
self.ring(200, 0.1, 0.9, 'right')
self.tu.forward(10)
self.tu.left(90)
self.ring(200, 0.2, 0.9, 'right')
self.tu.left(100)
self.tu.left
self.tu.forward(80)
# 身體
self.go_to(-228, 72 - ybias)
self.tu.left(40)
self.tu.forward(40)
self.ring(120, 0.2, 0.9, 'left')
self.go_to(-219, 52 - ybias)
self.tu.right(95)
self.tu.forward(80)
self.tu.right(85)
self.ring(205, 0.1, 0.9, 'left')
self.tu.forward(40)
self.tu.left(90)
self.tu.forward(10)
self.ring(200, 0.1, 0.9, 'right')
self.tu.forward(10)
self.tu.left(90)
self.tu.forward(40)
self.ring(205, 0.1, 0.9, 'left')
self.tu.right(92)
self.tu.forward(90)
# 左眼
self.go_to(-217, 155 - ybias)
self.tu.fillcolor('black')
self.tu.begin_fill()
self.tu.circle(5)
self.tu.end_fill()
# 右眼
self.go_to(-169, 158 - ybias)
self.tu.fillcolor('black')
self.tu.begin_fill()
self.tu.circle(5)
self.tu.end_fill()
# 微笑
self.go_to(-210, 132 - ybias)
self.tu.right(180)
self.ring(200, 0.2, 0.9, 'left')
# 腮紅
self.tu.color('#ffa0a0')
self.tu.pensize(5)
self.tu.left(170)
self.go_to(-235, 135 - ybias)
self.tu.forward(11)
self.go_to(-225, 135 - ybias)
self.tu.forward(11)
self.go_to(-155, 140 - ybias)
self.tu.forward(11)
self.go_to(-165, 140 - ybias)
self.tu.forward(11)
# 比心
self.tu.setheading(0)
self.heart(-35, 135 - ybias, 0.10)
self.tu.setheading(0)
self.heart(5, 150 - ybias, 0.13)
self.tu.setheading(0)
self.heart(52, 165 - ybias, 0.15)
def word(self, s, x, y):
self.go_to(x, y)
self.tu.write(s, align="left", font=("華文行楷", 20, "normal"))
# 學習中遇到問題沒人解答?小編創建了一個Python學習交流QQ群:732481539
# 尋找有志同道合的小伙伴,互幫互助,群裡還有不錯的視頻學習教程和PDF電子書!
if __name__ == '__main__':
root = tk.Tk()
basedesk(root)
root.mainloop()


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved