文章目錄
- 前言
- 一、關不掉的視窗
- 二、代碼部分
- 1.匯入所需的庫
- 2.生成主視窗
- 3.生成提問、加載圖片
- 4.生成按鈕
- 5.定義點擊按鈕時的回應函式
- 6.主函式部分
- 三、結果展示
前言
沒想到那么多人關注閱讀有趣系列之一飄落的銀杏,看來大家更喜歡有趣的東西(學習這種東西沒人看,哈哈哈哈),那接著更有趣系列第二篇,如果看的人多的話還會繼續更新這個系列,沒人的話我就繼續整理筆記吧 ~
一、關不掉的視窗
當你遇到某個喜歡妹子,不知道如何表達自己的好感時,可以給她發個小程式,讓她選擇是否喜歡你~把“不喜歡”這個按鈕焊死,只有“喜歡”你才能關閉程式,強行達成共識,就可以抱得美人歸了,
(純屬虛構,請勿實驗,被拉黑了不要找我 )
本篇主要是利用python中的tkinter庫來實作,
二、代碼部分
1.匯入所需的庫
import tkinter as tk
from PIL import ImageTk
from tkinter import messagebox
from tkinter import *
import time
之所以匯入time,是為了防止你被女神直接拉黑,
2.生成主視窗
可以根據后面加載的圖片選擇視窗的大小,視窗的文字可以根據自己的想法更改,
root = tk.Tk() #新建視窗
root.title('噓~我喜歡你呀') #視窗名字
root.geometry('390x350+500+220') #視窗,385x400是大小,第1個加號是距離螢屏左邊的寬,第2個加號是距離螢屏頂部的高,
root.mainloop() #保持視窗
3.生成提問、加載圖片
效果如下所示,文字和顏色我都隨意選的,你們可以根據注釋進行更改,圖片也是我隨意選取的一張圖,你們可以自己選擇圖片,需要注意的是需要把圖片放入程式所在檔案夾,在程式中更改加載圖片的名字就行,Tips:圖片大小的更改需要配合2.2生成視窗的大小,否則圖片會顯示不完全,
l1 = tk.Label(root, text='問你一個問題呀', font=('微軟雅黑', 14), fg='red' )#第一行第一句話,可以根據自己的需要調整字體大小和想寫的話
l1.grid()
l2 = tk.Label(root, text='你喜歡我嗎?', font=('微軟雅黑', 25), fg='blue') #第二行第一句話,可以根據自己的需要調整字體大小和想寫的話
l2.grid(row=1, column=1, sticky=tk.E)
bm = ImageTk.PhotoImage(file='./test.jpg') ##加載圖片,記得把圖片放到程式運行的檔案夾
l3 = tk.Label(root, image=bm)
l3.grid(row=2, columnspan=2)
4.生成按鈕
這里生成的按鈕是不帶功能的,需要點擊帶功能的話,需要加入command,會在下一節中提到,所以如果在復制代碼時記得別忘了在代碼中加入command = 你命名的函式,例如:
b2 = tk.Button(root, text='不喜歡', width=4, height=1, command=nolove) #加入“不喜歡”的按鈕和點擊的動作
Tips:可以把“不喜歡”的按鈕設定的小一點,
b1 = tk.Button(root, text='喜歡', width=18, height=2) #加入“喜歡”的按鈕和點擊的動作
b1.grid(row=3, column=0, sticky=tk.W)
b2 = tk.Button(root, text='不喜歡', width=4, height=1) #加入“不喜歡”的按鈕和點擊的動作
b2.grid(row=3, column=3, sticky=tk.E)
5.定義點擊按鈕時的回應函式
上一節只是生成了按鈕,但不帶點擊回應功能,這一節我們定義一些回應函式,就可以做到互動了,
可以注意到我在 love()方法中加入了一個 if 判斷,因為我把關閉的按鍵都寫死了,視窗會一直關不掉,會越彈越多,只有通過任務管理器關閉,不會任務管理器的小姐姐就只能看著視窗越點越多,然后越想越氣,把你拉黑,加入一個time庫,再利用if判斷,當視窗運行時間達到你設定的值時,點擊喜歡即可關閉程式,單位是s,我這里設定的是60s后點擊“喜歡”即可關閉程式,
def Love(): #定義點擊“喜歡”時的動作
love = Toplevel(root)
love.geometry('300x150+240+200')
love.title('好巧啊,我也是')
label = Label(love, text='好巧,我也是', font=('楷體',15))
label.pack()
label1 = Label(love, text='留個電話可以嗎', font=('楷體', 10))
label1.pack()
entry = Entry(love,font=('楷體', 15))
entry.pack()
btn = Button(love, text = '確定', width=10, height=2, command=Sure)
btn.pack()
love.protocol("WM_DELETE_WINDOW", closelove)
if time.time() - start > 60: #設定一個時間,超過多少秒以后,點擊”喜歡“可關閉
closeall()
def Sure():
sure = Toplevel(root)
sure.geometry('300x150+240+200')
sure.title('我不信')
label = Label(sure, text='除非你現在給我打電話', font=('楷體', 15))
label.pack()
label = Label(sure, text='5201314', font=('楷體', 15))
label.pack()
btn = Button(sure, text='好的', width=10, height=2, command=clicksure)
btn.pack()
sure.protocol("WM_DELETE_WINDOW", closelove)
def nolove(): #定義點擊“不喜歡”時的動作
no_love = Toplevel(root)
no_love.geometry('300x100+250+200')
no_love.title('你肯定是騙我的')
label = Label(no_love, text='再考慮考慮唄', font=('楷體',25))
label.pack()
btn = Button(no_love, text='好的', width=10, height=2, command=no_love.destroy)
btn.pack()
no_love.protocol("WM_DELETE_WINDOW", closenolve)
def closeroot(): #定義點擊關閉視窗的動作
messagebox.showinfo(title='警告', message='不許關閉,好好回答')
return
def closeall(): #定義關閉所有的方法
root.destroy()
def closelove(): #定義點擊關閉喜歡時的動作
messagebox.showinfo('不再考慮一下嘛', message='再考慮一下吧')
return
def closenolve():
nolove()
def clicksure(): #定義點擊確定打電話時的相應
messagebox.showinfo('哼,你又騙我', message='我還沒收到電話')
return
6.主函式部分
再加入第5節的回應函式即可構成完整的程式,
if __name__ == '__main__':
start = time.time()
root = tk.Tk() #新建視窗
root.title('噓~我喜歡你呀') #視窗名字
root.geometry('390x350+500+220') #視窗,385x400是大小,第1個加號是距離螢屏左邊的寬,第2個加號是距離螢屏頂部的高,
root.protocol("WM_DELETE_WINDOW", closeroot) #使視窗無法關閉
l1 = tk.Label(root, text='問你一個問題呀', font=('微軟雅黑', 14), fg='red' )#第一行第一句話,可以根據自己的需要調整字體大小和想寫的話
l1.grid()
l2 = tk.Label(root, text='你喜歡我嗎?', font=('微軟雅黑', 25), fg='blue') #第二行第一句話,可以根據自己的需要調整字體大小和想寫的話
l2.grid(row=1, column=1, sticky=tk.E)
bm = ImageTk.PhotoImage(file='./test.jpg') ##加載圖片,記得把圖片放到程式運行的檔案夾
l3 = tk.Label(root, image=bm)
l3.grid(row=2, columnspan=2)
b1 = tk.Button(root, text='喜歡', width=18, height=2, command=Love) #加入“喜歡”的按鈕和點擊的動作
b1.grid(row=3, column=0, sticky=tk.W)
b2 = tk.Button(root, text='不喜歡', width=4, height=1, command=nolove) #加入“不喜歡”的按鈕和點擊的動作
b2.grid(row=3, column=3, sticky=tk.E)
root.mainloop() #保持視窗
三、結果展示
運行程式后,點擊不同按鈕有不同回應,但無論如何互動都無法關掉程式,只能通過任務管理器或者等到了你設定的時間后,點擊“喜歡”才能關閉程式,
學會了嗎~趕緊寫個程式打包發給你喜歡的妹子吧,Tips:拉黑了別找我(不會有人還不會打包成exe檔案吧,不會吧不會吧,開個玩笑,不會的可以評論區留言)
以上,就是全部內容了,雖然簡單,但是可以發揮的空間還有很多,比如可以再多定義幾個互動動作,達到回圈套外的效果,我這里只是簡單的加了一些互動,大家可以發揮自己的想象力,繼續多加點功能,
有一個需要特別提一下的就是,留個電話下面的文本框輸入,后續沒有再定義函式,并不能回傳給我們,但其實我們可以再加入一部分實作對方輸入號碼點擊確認后,將輸入的內容發送到我們郵箱(前提對方聯網了),如果需要的人多的話后續可以再水 寫一篇如何將輸入內容發送到郵箱,
完整代碼后續會上傳到github,
已上傳:https://github.com/sw1122/interesting-PY-projects.git
系列之三預告:“顏值打分”
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278087.html
標籤:python