用Tkinter庫創建一個窗口對象,用條件判定來控制窗口內容與何時結束窗口進程。
from tkinter import *
import tkinter.messagebox as messagebox
class Application(Frame): # 創建類
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack() #相當於把組件打包進GUI中
self.createWidgets()
def createWidgets(self): #設置主要窗口的內容
self.tiplabel = Label(self, text='如果我是DJ你會愛我嗎?')
self.tiplabel.pack()
self.valueInput = Entry(self) #輸入文本框
self.valueInput.pack()
self.alertButton = Button(self, text='驗證', command=self.proof) #提交按鈕
self.alertButton.pack()
def proof(self): #設置回答窗口的邏輯和內容
keyvalue = self.valueInput.get()
if keyvalue == '會':
messagebox.showinfo('小秘密', '我也愛你哦~')
root.destroy()
else:
messagebox.showerror('回答錯誤', '我覺得你可以再考慮一下?')
def callback(): #如果用戶點擊關閉窗口
messagebox.showwarning('警告','請不要回避我對你的愛')
root = Tk() #創建tkinter對象
root.geometry('300x150') #設置窗口大小
app = Application().pack() #創建自定義類對象
root.protocol("WM_DELETE_WINDOW", callback) #如果用戶關閉窗口則執行callback函數
root.mainloop() #使窗口進程開始循環
本代碼體現了面向對象程序(OOP)。它是Python最強大的功能之一,具體可參考這條知乎的內容。
在構建窗口時,我們已經做到了防止用戶直接關閉窗口。通過其它的邏輯判定,我們甚至可以使窗口左上角在用戶鼠標50像素內時“閃現”到其它位置。感興趣的同學們可以思考下如何實現。(話說表白還是直接點更好?)