今天好寂寞啊,來做一個(gè)老婆生成器吧,讓你的夜晚不在空虛。
話不多說,上我老婆

1.gif

0.png
1.代碼其實(shí)很簡單,就是在一塊畫布上隨機(jī)放上圖片。首先我們創(chuàng)建一個(gè)WifeGenerator類,放上一塊畫布和一個(gè)按鈕
class WifeGenerator(Tk):
def __init__(self):
super().__init__()
self.title('老婆生成器')
self.geometry('400x500')
# 畫布
self.canvas = Canvas(self, width=300, height=400)
self.canvas.place(x=200, y=230, anchor='center')
# 開始按鈕
self.btn_start = Button(self, text='就決定是你了', font=('宋體', 15), bd=1, command=self.begin)
self.btn_start.place(x=200, y=465, anchor='center')
2.要隨機(jī)選擇圖片,我們可以把所有圖片放在一個(gè)列表中,然后隨機(jī)生成一個(gè)下標(biāo)。這里教大家一個(gè)小技巧,使用推導(dǎo)式可以方便的把N個(gè)圖片放在列表中
img_list = [str(i) + '.png' for i in range(n)]
3.圖片要滾動(dòng)起來,需要在一個(gè)循環(huán)中不停地隨機(jī)放置圖片
def timer(self):
global wife_file
# 設(shè)置隨機(jī)的時(shí)間
ran_time = random.randint(2, 3) # 圖片快速滾動(dòng)的時(shí)間
ran_end_time = random.randint(1, 2) # 在1到2秒內(nèi)滾動(dòng)速度慢慢下降
while True:
self.btn_start['state'] = DISABLED
# 生成一個(gè)0~25的隨機(jī)數(shù)
img_index = random.randint(0, 25)
# PIL模塊是一個(gè)圖像處理庫,和tkinter也有很好的接口
pil_wife= Image.open('./img/wife/' + img_list[img_index])
# 重新設(shè)置圖片的尺寸為300x400
pil_wife= pil_wife.resize((300, 400), Image.ANTIALIAS)
vegetable_file = ImageTk.PhotoImage(pil_vegetable)
# 把隨機(jī)的圖片放在畫板的中間
self.canvas.create_image(150, 200, anchor='center', image=wife_file)
# 這里設(shè)置圖片滾動(dòng)速度的規(guī)則
if counter <= ran_time:
time.sleep(0.05)
counter += 0.05
elif counter <= (ran_time + ran_end_time/2):
time.sleep(0.1)
counter += 0.1
elif counter <= (ran_time + ran_end_time/4*3):
time.sleep(0.2)
counter += 0.2
elif counter <= (ran_time + ran_end_time):
time.sleep(0.3)
counter += 0.3
else:
self.btn_start['state'] = NORMAL
break
4.最后在按鈕的command中用多線程調(diào)用這個(gè)函數(shù)timer
def begin(self):
threading.Thread(target=self.timer).start()
今天的小菊花哥哥課堂就到這里了,如有疑問和指教,歡迎交流