import random
import tkinter
import tkinter.messagebox
import tkinter.simpledialog
root = tkinter.Tk()
#窗口標題
root.title('猜數游戲--by董付國')
#窗口初始大小和位置
root.geometry('280x80+400+300')
#不允許改變窗口大小
root.resizable(False, False)
#用戶猜的數
varNumber = tkinter.StringVar(root, value='0')
#允許猜的總次數
totalTimes = tkinter.IntVar(root, value=0)
#已猜次數
already = tkinter.IntVar(root, value=0)
#當前生成的隨機數
currentNumber = tkinter.IntVar(root, value=0)
#玩家玩游戲的總次數
times = tkinter.IntVar(root, value=0)
#玩家猜對的總次數
right = tkinter.IntVar(root, value=0)
lb = tkinter.Label(root, text='請輸入一個整數:')
lb.place(x=10, y=10, width=100, height=20)
#用戶猜數並輸入的文本框
entryNumber = tkinter.Entry(root, width=140, textvariable=varNumber)
entryNumber.place(x=110, y=10, width=140, height=20)
#只有開始游戲以后才允許輸入
entryNumber['state'] = 'disabled'
#關閉程序時提示戰績
def closeWindow():
message = '本次共玩游戲 {0} 次,猜對 {1} 次!\n歡迎下次再玩!'.format(times.get(), right.get())
tkinter.messagebox.showinfo('戰績', message)
root.destroy()
root.protocol('WM_DELETE_WINDOW', closeWindow)
#按鈕單擊事件處理函數
def buttonClick():
if button['text']=='Start Game':
#每次游戲時允許用戶自定義數值范圍
#玩家必須輸入正確的數
while True:
try:
start = tkinter.simpledialog.askinteger('允許的最小整數', '最小數', initialvalue=1)
break
except:
pass
while True:
try:
end = tkinter.simpledialog.askinteger('允許的最大整數', '最大數', initialvalue=10)
break
except:
pass
#在用戶自定義的數值范圍內生成隨機數
currentNumber.set(random.randint(start, end))
#用戶自定義一共允許猜幾次
#玩家必須輸入正確的整數
while True:
try:
t = tkinter.simpledialog.askinteger('最多允許猜幾次?', '總次數', initialvalue=3)
totalTimes.set(t)
break
except:
pass
#已猜次數初始化為0
already.set(0)
button['text'] = '剩余次數:' + str(t)
#把文本框初始化為0
varNumber.set('0')
#允許用戶開始輸入整數
entryNumber['state'] = 'normal'
#玩游戲的次數加1
times.set(times.get() + 1)
else:
#一共允許猜幾次
total = totalTimes.get()
#本次游戲的正確答案
current = currentNumber.get()
#玩家本次猜的數
try:
x = int(varNumber.get())
except:
tkinter.messagebox.showerror('抱歉', '必須輸入整數')
return
if x == current:
tkinter.messagebox.showinfo('恭喜', '猜對啦')
button['text'] = 'Start Game'
#禁用文本框
entryNumber['state'] = 'disabled'
right.set(right.get() + 1)
else:
#已猜次數加1
already.set(already.get()+1)
if x > current:
tkinter.messagebox.showerror('抱歉', '猜的數太大了')
else:
tkinter.messagebox.showerror('抱歉', '猜的數太小了')
#可猜次數用完了
if already.get()==total:
tkinter.messagebox.showerror('抱歉', '游戲結束了,正確的數是:'+str(currentNumber.get()))
button['text'] = 'Start Game'
#禁用文本框
entryNumber['state'] = 'disabled'
else:
button['text'] = '剩余次數:' + str(total-already.get())
#在窗口上創建按鈕,並設置事件處理函數
button = tkinter.Button(root, text='Start Game', command=buttonClick)
button.place(x=10, y=40, width=250, height=20)
#啟動消息主循環
root.mainloop()
有時間更改一下,感覺還不錯哈
https://www.cnblogs.com/Wxtrkbc/p/5453349.html
import tkinter import math import tkinter.messagebox import random root =tkinter.Tk() root.minsize(350,260) root.title('猜數字游戲') number=random.randint(1,20) def say_hello(): print('hello,world!') def send_low(): tkinter.messagebox.showinfo("messagebox","Your guess is too low.") def check_num(): guess=text_guess.get() guess=int(guess) if guess>number: tkinter.messagebox.showinfo("height","Your guess is too height.") if guess < number: tkinter.messagebox.showinfo("low","Your guess is too low.") if guess == number: tkinter.messagebox.showinfo("good","Good job!") def btn_confirm(): myName=text_name.get() tkinter.messagebox.showinfo("name",'Well,'+myName+',I am thinking of a number between 1 and 20.') #name label=tkinter.Label(root,text="Wellcome to our game!") label.pack() label_name=tkinter.Label(root,text="What's your name?") label_name.place(x=10,y=60) text_name=tkinter.Entry(root,width=20) text_name.place(x=10,y=90) btnOK=tkinter.Button(root,text="OK",command=btn_confirm) btnOK.place(x=200,y=90,height=28) #input label_guess=tkinter.Label(root,text='Take a guess:') label_guess.place(x=10,y=150) text_guess=tkinter.Entry(root,width=10) text_guess.place(x=90,y=150) btnCheck=tkinter.Button(root,text='Guess',command=check_num) btnCheck.place(x=200,y=150,width=45,height=28) root.mainloop()
