一、基础内容
import tkinter as tk from PIL import Image,ImageTk def my(): pwin.destroy() win.deiconify() win = tk.Tk() #win.geometry(\'320x240+100+50\') #长320宽240 右100,下50 win[\'width\']=320 #可以用win.keys()查看哪些可以这样写 win[\'height\']=240 win.title(\'tkinter图形化专题学习\') #win.iconbitmap(\'my.ico\') img=ImageTk.PhotoImage(image=Image.open(\'1.gif\',\'r\')) win.iconphoto(False,img) #win.withdraw()#临时退出 #win.deiconify()#恢复 #win.iconify()#最小化 #win.destroy()#关掉 #help(win.state) \"\"\" win.state(\'iconic\') win.state(\'normal\') win.state(\'zommed\') win.state(\'zoomed\') win.state(\'withdraw\') \"\"\" #win.attributes(\'-alpha\',0.5) #设置透明度 #win.attributes(\'-toolwindow\',1)#没有最大化最小化按钮 #win.attributes(\'-toolwindow\',0)#常规窗口 #win.attributes(\'-topmost\',1) #置顶 win.withdraw() #隐藏原窗口 pwin=tk.Toplevel(win) #新建弹窗 pwin.title(\'弹窗\') pwin.protocol(\'WM_DELETE_WINDOW\',my) win.mainloop()
二、渐变窗口与计时器
#计时器 import tkinter as tk import time def my(): global x if x >1: return win.title(\'计时器:{:.2f}\'.format(x)) win.attributes(\'-alpha\', x) x += 0.01 win.after(200,my) #100ms win = tk.Tk() win.title(\"计时器\") win[\'bg\']= \'lightblue\' #用win.keys()查看 win.geometry(\'300x300\') win.resizable(0,0) #不可变窗口大小 x = 0.01 win.attributes(\'-alpha\', x) win.after(200,my) win.mainloop()
三、简单的布局标签文本框按钮
3.1 布局
import tkinter as tk win=tk.Tk() win.title(\"布局\") win.geometry(\'320x240\') #win.resizable(0,0) #定义 lbl=tk.Label(win,text=\"请输入\") txt=tk.Entry(win) btn=tk.Button(win,text=\"确定\") #布局 方法一pack打包式放置 方法二grid表格式放置 方法三place任意放置 \"\"\" lbl.pack(side=\'left\' ,padx=(10,0)) txt.pack(side=\'left\') #txt.pack_info()查看pack的参数 btn.pack(side=\'left\', padx=\'10\') \"\"\" \"\"\" lbl.grid(row=0,column=0,padx=(50,10),pady=10) #lbl.grid_info()查看grid的参数 txt.grid(row=0,column=1) btn.grid(row=1,column=0,columnspan=2,padx=(50,0),pady=10, sticky=\'we\') \"\"\" lbl.place(relx=0.1,rely=0.2) txt.place(relx=0.3,rely=0.15) btn.place(relx=0.5,rely=0.25) #win.mainloop()
3.2 布局
import tkinter as tk #建窗口 win=tk.Tk() win.title(\'布局\') #建组件 frm=tk.Frame(win) #框架 #定义 lbl=tk.Label(frm,text=\'请输入\') txt=tk.Entry(frm) btn=tk.Button(win,text=\'确定\') #布局 lbl.pack(side=\'left\', padx=10, pady=10) txt.pack(side=\'left\', padx=10, pady=10) frm.pack() btn.pack(fill=\'x\') win.mainloop()
四、摄氏度华氏度
import tkinter as tk def myfun(e): #def myfun(): try: a=int(entry1.get()) b=int(entry2.get()) lbx.delete(0,\'end\') for i in range(a,b+1): f=i*9/5+32 lbx.insert(\'end\',\' {} {}\'.format(i,f)) except: pass win=tk.Tk() win.title(\'温度转换\') win.resizable(0,0) #大小不可更改 label1 = tk.Label(win, text=\'请输入第1个整数\') label2 = tk.Label(win, text=\'请输入第2个整数\') label3 = tk.Label(win, text=\'摄氏温度 华氏温度\') entry1 = tk.Entry(win) entry2 = tk.Entry(win) entry1.insert(0, \'10\') entry2.insert(0, \'15\') #btn=tk.Button(win, text=\'确定\',command=myfun) btn=tk.Label(win, text=\'确定\',#把label变成按钮 relief=\'groove\') #浮雕 btn.bind(\'<Button-1>\', myfun) #用bing绑定 必须给函数参数 lbx=tk.Listbox(win) #滚动条 scr=tk.Scrollbar(win) scr[\'command\']=lbx.yview lbx[\'yscrollcommand\']=scr.set label1.grid(row=1, column=0) label2.grid(row=2, column=0) label3.grid(row=0, column=2) entry1.grid(row=1, column=1) entry2.grid(row=2, column=1) btn.grid(row=3, column=1, sticky=\"ew\") lbx.grid(row=1, column=2, rowspan=3, padx=10, pady=10) scr.grid(row=1, column=3, rowspan=3, sticky=\'ns\') #btn.key()找到可以设置的参数 或者btn.config() win.mainloop()
五、随机弹出数字(随机点名、抽奖)
import tkinter as tk import random def myfun(): lst=list(range(100)) name=random.choice(lst) lbl[\'text\']=name win.after(500,myfun) win=tk.Tk() win.title(\'抽奖程序\') lbl=tk.Label(win,text=\'***\', width=6,font=\'-size 48\') btn=tk.Button(win,text=\'开始\', font=\'-size 36\', command=myfun) lbl.grid(row=0,column=0,padx=10,pady=10) btn.grid(row=0,column=1,padx=10,pady=10) #win.mainloop()
六、几行几列五子棋画布
import tkinter as tk win=tk.Tk() win.title(\'五子棋\') win.geometry(\'800x600+64+32\') win.resizable(0,0) #建画布 cav=tk.Canvas(win, width=600,height=600, bg=\'yellow\') rfm=tk.Frame(win,width=200,height=600, bg=\'lightyellow\') cav.pack(side=\'left\') rfm.pack(side=\'right\') #画线 for i in range(1,20): x1, y1, x2, y2=30, i*30,19*30,i*30 cav.create_line(x1,y1,x2,y2) cav.create_line(y1,x1,y2,x2)
© 版权声明
THE END
暂无评论内容