当前位置:   article > 正文

Python|ikun专属tkinterGUI设计,你不看看?

Python|ikun专属tkinterGUI设计,你不看看?

 (。・∀・)ノ゙嗨,大家好。我已经是鸽鸽十坤年老粉了,我打算给我家鸽鸽做一个ikun模拟器,你们这些小黑子难道只想吃我家鸽鸽下的蛋,不为鸽鸽做些什么吗,要是想当一名合格ikun粉,就跟我一起为鸽鸽做个简单的ikun模拟器吧!

目录

最终效果图:

ikun模拟器的制作:

图片素材:

音乐素材:

最终效果图:

    各位ikun,这效果还不戳吧

ikun模拟器的制作:

直接上完整源代码:

  1. import tkinter as tk
  2. import turtle
  3. from math import *
  4. from turtle import *
  5. import pyttsx3
  6. from PIL.ImageTk import PhotoImage
  7. from playsound import playsound
  8. root = tk.Tk()
  9. root.title("ikun模拟器")
  10. root.geometry("300x200")
  11. def name():
  12. playsound('D:\\360Downloads\\Software\\鸡你太美.wav')
  13. def no():
  14. # 高级椭圆参数方程(颜色),sita为逆时针旋转角度
  15. turtle.title('绘制ikun')
  16. def ty_c(x, y, sita, a, b, p, q, c):
  17. fillcolor(c)
  18. si = 2 * pi / 100
  19. penup()
  20. goto(x + a * cos(sita), y + a * sin(sita))
  21. pendown()
  22. t = 0
  23. for i in range(201):
  24. if i * si + sita <= p:
  25. penup()
  26. goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita),
  27. y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))
  28. pendown()
  29. elif p <= i * si + sita <= q + 2 * pi / 100:
  30. if t == 0:
  31. begin_fill()
  32. t = 1
  33. goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita) \
  34. , y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))
  35. end_fill()
  36. # 高级椭圆方程
  37. def ty(x, y, sita, a, b, p, q):
  38. si = 2 * pi / 100
  39. penup()
  40. goto(x + a * cos(sita), y + a * sin(sita))
  41. pendown()
  42. for i in range(201):
  43. if i * si + sita < p:
  44. penup()
  45. goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita) \
  46. , y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))
  47. pendown()
  48. elif p <= i * si + sita <= q + 2 * pi / 100:
  49. goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita)
  50. , y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))
  51. speed(0)
  52. hideturtle()
  53. # 篮球
  54. pensize(10)
  55. pencolor('black')
  56. ty_c(350, -267, 0, 161, 161, 0, 2 * pi, '#ff9900')
  57. ty(350, -267 + 161 + 50, 0, 161, 161, 7 * pi / 6 + pi / 12, 11 * pi / 6 - pi / 12)
  58. ty(350, -267 - 161 - 50, 0, 161, 161, pi / 6 + pi / 12, 5 * pi / 6 - pi / 12)
  59. ty(350, -267 + 161 + 330, 0, 500, 500, 8.5 * pi / 6, 9.5 * pi / 6)
  60. # 脸
  61. pensize(20)
  62. ty_c(0, 0, 0, 657 / 2, 576 / 2, 0, 2 * pi, '#ffcc00')
  63. # 眼睛
  64. pensize(22)
  65. ty_c(55, 52, 0, 106, 104, 0, 2 * pi, 'white')
  66. ty_c(-165, 60, 0, 101, 99, 0, 2 * pi, 'white')
  67. pensize(20)
  68. ty_c(4, 79, 0, 14, 14, 0, 2 * pi, 'black')
  69. ty_c(-201, 80, 0, 14, 14, 0, 2 * pi, 'black')
  70. # 嘴巴
  71. pensize(12)
  72. ty_c(-66, -76, 0, 102, 62, 0, 2 * pi, '#ff6600')
  73. penup()
  74. goto(-155, -50)
  75. pendown()
  76. goto(-134, -64)
  77. goto(-115, -74)
  78. goto(-90, -82)
  79. goto(-67, -86)
  80. goto(-47, -85)
  81. goto(-25, -82)
  82. goto(0, -77)
  83. goto(15, -66)
  84. goto(25, -55)
  85. # 腮红
  86. pensize(1)
  87. pencolor('red')
  88. ty_c(-256, -90, 15 * pi / 180, 49, 66, 0, 2 * pi + 15 * pi / 180, 'red')
  89. ty_c(201, -105, 0, 73, 75, 0, 2 * pi, 'red')
  90. # 领口
  91. color('black', 'black')
  92. pensize(10)
  93. penup()
  94. goto(-275, -227)
  95. pendown()
  96. begin_fill()
  97. goto(-241, -209)
  98. goto(-189, -233)
  99. goto(-166, -260)
  100. goto(-127, -272)
  101. goto(-88, -252)
  102. goto(-49, -233)
  103. goto(-19, -227)
  104. goto(51, -237)
  105. goto(108, -242)
  106. goto(168, -242)
  107. goto(210, -233)
  108. goto(250, -206)
  109. goto(252, -254)
  110. goto(216, -269)
  111. goto(-13, -353)
  112. goto(-65, -362)
  113. goto(-109, -356)
  114. goto(-178, -317)
  115. goto(-214, -296)
  116. goto(-246, -266)
  117. goto(-272, -245)
  118. goto(-275, -227)
  119. end_fill()
  120. # 衣服
  121. penup()
  122. goto(-244, -287)
  123. pendown()
  124. begin_fill()
  125. goto(-269, -314)
  126. goto(-310, -405)
  127. goto(-304, -410)
  128. goto(-21, -416)
  129. goto(317, -410)
  130. goto(331, -398)
  131. goto(323, -381)
  132. goto(319, -356)
  133. goto(315, -320)
  134. goto(275, -266)
  135. goto(263, -257)
  136. pensize(15)
  137. pencolor('#c0c0c0')
  138. goto(252, -254)
  139. goto(216, -269)
  140. goto(-13, -353)
  141. pensize(13)
  142. goto(-65, -362)
  143. goto(-109, -356)
  144. pensize(10)
  145. goto(-178, -317)
  146. goto(-214, -296)
  147. goto(-246, -284)
  148. end_fill()
  149. # 肩带
  150. penup()
  151. goto(-206, -310)
  152. pendown()
  153. pensize(30)
  154. goto(-183, -363)
  155. goto(-180, -384)
  156. goto(-184, -414)
  157. penup()
  158. goto(229, -285)
  159. pendown()
  160. goto(203, -360)
  161. pensize(34)
  162. goto(190, -415)
  163. penup()
  164. goto(-115, -360)
  165. pendown()
  166. pensize(8)
  167. goto(-96, -411)
  168. goto(-75, -413)
  169. goto(18, -371)
  170. goto(69, -341)
  171. goto(105, -325)
  172. pensize(12)
  173. goto(177, -297)
  174. # 中分
  175. pencolor('#808080')
  176. pensize(1)
  177. penup()
  178. goto(67, 393)
  179. pendown()
  180. fillcolor('#808080')
  181. begin_fill()
  182. goto(43, +419)
  183. goto(13, +431)
  184. goto(-96, +426)
  185. goto(-156, +402)
  186. goto(-239, +336)
  187. goto(-277, +300)
  188. goto(-307, +263)
  189. goto(-372, +153)
  190. goto(-383, +101)
  191. goto(-373, +57)
  192. goto(-339, +38)
  193. goto(-298, +40)
  194. goto(-278, +61)
  195. goto(-236, +74)
  196. goto(-176, +103)
  197. goto(-163, +128)
  198. goto(-135, +224)
  199. goto(-95, +265)
  200. goto(-64, +271)
  201. goto(-30, +253)
  202. goto(22, +269)
  203. goto(61, 268)
  204. goto(75, 202)
  205. goto(93, 132)
  206. goto(108, 71)
  207. goto(136, 31)
  208. goto(171, 4)
  209. goto(236, -10)
  210. goto(277, -10)
  211. goto(323, -25)
  212. goto(363, -61)
  213. goto(404, -35)
  214. goto(423, 14)
  215. goto(453, 71)
  216. goto(457, 120)
  217. goto(441, 170)
  218. goto(398, 227)
  219. goto(331, 285)
  220. goto(283, 323)
  221. goto(232, 360)
  222. goto(168, 396)
  223. goto(122, 416)
  224. goto(87, 406)
  225. goto(67, 393)
  226. end_fill()
  227. pencolor('black')
  228. pensize(4)
  229. goto(-30, +253)
  230. printer = turtle.Turtle()
  231. printer.hideturtle()
  232. printer.penup()
  233. printer.write("啊你干嘛啊啊啊啊啊??")
  234. def ikun():
  235. engine = pyttsx3.init()
  236. r = tk.Tk()
  237. r.title('确定要退出吗?')
  238. r.geometry('250x250')
  239. def yes():
  240. exit()
  241. tk.Button(r, text='确定', command=yes).pack()
  242. engine.say('确定要退出吗')
  243. engine.runAndWait()
  244. r.mainloop()
  245. def ikun1():
  246. playsound('D:\\360Downloads\\Software\\你干嘛哈哈.wav')
  247. photo = PhotoImage(file='D:\\360Downloads\\Software\\60.jpg')
  248. photo1 = PhotoImage(file='D:\\360Downloads\\Software\\系你太美.webp')
  249. photo2 = PhotoImage(file='D:\\360Downloads\\Software\\kun.png')
  250. msg1 = tk.Message(root,
  251. text='''鸡你太美''',
  252. fg='black',
  253. relief='flat')
  254. msg1.place(relx=0.2, y=10, relheight=0.1, width=48)
  255. c = tk.Message(root,
  256. text='你干嘛哈哈',
  257. fg='black',
  258. relief='flat')
  259. c.place(relx=0.1, y=70, relheight=0.1, width=68, height=30)
  260. d = tk.Message(root,
  261. text='绘制ikun',
  262. fg='yellow',
  263. relief='flat')
  264. d.place(relx=0.2, y=150, relheight=0.1, width=68)
  265. tk.Button(root, command=name, image=photo, width=65, height=70, text='你干嘛哈哈').pack()
  266. tk.Button(root, text='绘制ikun', command=ikun1, image=photo1).pack()
  267. tk.Button(root, command=no, image=photo2, ).pack()
  268. tk.Button(root, text='退出', command=ikun).pack()
  269. root.mainloop()

代码主要用了def定义函数,tkinter界面布局,绘制ikun的turtle库,以及playsound函数播放音频。

上面的一些素材路径各位ikun们要改成自己的,要不然运行报错。

图片素材:

想要保存下列图片素材,只需把它拖到随便一个位置,然后松开,就会发现浏览器地址栏上多出来了打开的地址,那就是图片url地址,然后点击右键会有个"另存为",那个就可以保存图片啦

 ←是"鸡你太美"图片素材

←是"绘制ikun"图片素材

 ←是"你干嘛哈哈"图片素材

音乐素材:

这个在CSDN上没法展示,不过大家可以用手机播放音乐,用以下代码录音:

  1. import wave
  2. import pyaudio
  3. # 用Pyaudio库录制音频
  4. # out_file:输出音频文件名
  5. # rec_time:音频录制时间(秒)
  6. def audio_record():
  7. d = '你干嘛哈哈.wav'
  8. c = 2
  9. CHUNK = 2048
  10. FORMAT = pyaudio.paInt16 # 16bit编码格式
  11. CHANNELS = 1 # 单声道
  12. RATE = 16000 # 16000采样频率
  13. p = pyaudio.PyAudio()
  14. # 创建音频流
  15. stream = p.open(format=FORMAT, # 音频流wav格式
  16. channels=CHANNELS, # 单声道
  17. rate=RATE, # 采样率16000
  18. input=True,
  19. frames_per_buffer=CHUNK)
  20. print("Start Recording...")
  21. frames = [] # 录制的音频流
  22. # 录制音频数据
  23. for i in range(0, int(RATE / CHUNK * c)):
  24. data = stream.read(CHUNK)
  25. frames.append(data)
  26. # 录制完成
  27. stream.stop_stream()
  28. stream.close()
  29. p.terminate()
  30. print("Recording Done...")
  31. # 保存音频文件
  32. wf = wave.open(d, 'wb')
  33. wf.setnchannels(CHANNELS)
  34. wf.setsampwidth(p.get_sample_size(FORMAT))
  35. wf.setframerate(RATE)
  36. wf.writeframes(b''.join(frames))
  37. wf.close()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/205231
推荐阅读
相关标签
  

闽ICP备14008679号