经过上一篇Tkinter常用控件的介绍,这一篇运用一些基本控件,来实现一个简单的生日快乐小程序。
demo示例:
import Tkinter
from Tkinter import *
from tkMessageBox import showinfo
from Tkinter import Toplevel, IntVar, StringVar
top=Tkinter.Tk()
top.title("小仙女生日快乐")
#点击选项后显示的提示框内容
def show():
if v.get()==1:str='***'
elif v.get()==2:str='***'
elif v.get()==3:str='***'
elif v.get()==4:str='***'
elif v.get()==5:str='***'
elif v.get()==6:str='***'
elif v.get()==7:str='***'
showinfo('To 小仙女',message=str)
if v.get()==7:frame1.destroy()
#点击许愿后,弹出的新弹框内容和样式
def wish():
var.set("小可爱,要加油哦")
global frame1
frame1=Toplevel()
frame1.title("祝小仙女愿望成真")
frame1.geometry('300x300')
frame1.attributes("-topmost", 1)
frame1.attributes("-alpha",0.8)
global v
v=IntVar()
options=[('变得更漂亮?',1),('变成小富婆?',2),('变得更瘦?',3),('想出去玩儿?',4),('想要生日礼物?',5),('都想要?',6),('...',7)]
for option,num in options:
radiobutton=Tkinter.Radiobutton(frame1,text=option,variable=v,value=num,indicatoron=False,command=show)
radiobutton.pack(anchor=W)
#根弹框
var=StringVar(top)
var.set("点我许愿")
photo=Tkinter.PhotoImage(file='test.gif')
label=Tkinter.Label(top,image=photo,font=('微软雅黑',15))
label.pack()
wishbutton=Tkinter.Button(top,textvariable=var,font=('微软雅黑',15),fg='white',bg='pink',activeforeground='white',activebackground='pink',command=wish)
wishbutton.pack()
if __name__ == '__main__':
top.mainloop()
上面的界面实际上看起来跟我们的操作系统界面有些差别,用着会有些不舒服,这时候就用到了ttk—Tkinter的进阶版,界面美化,用法如下:
style = ttk.Style()
style.configure("BW.TButton",font=('Times',15,'bold'),foreground='white',background='pink')
style.configure("BW.TLabel",font=('Times',20))
photo=Tkinter.PhotoImage(file='test.gif')
label=ttk.Label(top,image=photo,style="BW.TLabel")
label.pack()
wishbutton=ttk.Button(top,textvariable=var,style="BW.TButton",command=wish)
wishbutton.pack()
美化之后的界面如下:感兴趣的可以深入研究下。
在写小程序的时候我想点击“点我许愿”之后更换图片,怎么也搞不定,后来查阅资料之后加几行代码就可以实现了,在wish模块儿里面加了三行,改成timg.gif就可以更换图片了
def wish():
var.set("小可爱,要加油哦")
global frame1
photo=Tkinter.PhotoImage(file='timg.gif')
label.config(image=photo)
label.image=photo
frame1=Toplevel()
frame1.title("祝小仙女愿望成真")
frame1.geometry('300x300')
frame1.attributes("-topmost", 1)
frame1.attributes("-alpha",0.8)
global v
v=IntVar()
options=[('变得更漂亮?',1),('变成小富婆?',2),('变得更瘦?',3),('想出去玩儿?',4),('想要生日礼物?',5),('都想要?',6),('...',7)]
for option,num in options:
radiobutton=ttk.Radiobutton(frame1,text=option,variable=v,value=num,command=show)
radiobutton.pack(anchor=W)