赞
踩
目录
tkinter是python进行窗口视窗设计的模块,是python中一个比较简单的GUI编程库,对于大多数python学习者来说,tkinter还是挺容易上手的,而且tkinter还是python自带的库,无需下载就可以直接使用。python的GUI编程和java的GUL编程很相似,这里推荐:JAVA GUI编程
这里主要介绍tkinter几个功能部件,掌握之后自己编写一个GUI程序不成问题:
messageBox 消息框
窗口的创建包括导入tkinter库,定义窗口标题(title)和窗口大小(geometry),最后通过窗口循环显示mainloop()显示出来,例如:
- import tkinter as tk
- window=tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- # 循环显示
- window.mainloop()
窗口:
窗口我们已经创建了,现在我们来创建一个Button按钮,创建格式:
tk.Button(window_name,text='',command='回调功能')
例如:
- import tkinter as tk
- window=tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- # 按钮
- bt=tk.Button(window,text='确定',bg='green')
- bt.pack() # 窗口加载
- # 循环显示
- window.mainloop()
显示一个绿色按钮
格式:
tk.Entry(window_name,show=' ',font=('字体,大小 ')
其中show表示输入后的文本显示内容,如果show=‘*’,输入密文,不定义show表示明文输出
例如:
- mport tkinter as tk
- window=tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- entry=tk.Entry(window,font=('微软黑体',20))
- entry1=tk.Entry(window,show='*',font=('微软黑体',20))
- entry2=tk.Entry(window,show='@',font=('微软黑体',20))
- entry.pack()
- entry1.pack()
- entry2.pack()
- # 循环显示
- window.mainloop()
效果:
text文本框和Entry都可以输入文本,只不过text是多行文本框,支持输入多行文本,而Entry是单行文本
格式:
tk.Text(window_name,height)
例如:
- import tkinter as tk
- window=tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- text=tk.Text(window,height=3)
- text.pack()
- # 循环显示
- window.mainloop()
Listbox以下拉的方式通过多选框,格式:
tk.Listbox(window_name,listvable)
例如:
- import tkinter as tk
- window=tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- label=tk.Label(window,text='请选择:')
- ver=tk.StringVar()
- ver.set(('杨幂','刘亦菲','林志玲'))
- lsitbox=tk.Listbox(window,listvariable=ver,height=4)
- label.pack()
- lsitbox.pack()
- # 循环显示
- window.mainloop()
多选按钮定义格式:
tk.radiobutton(window_name,text,variable,value,command)
例如:
- import tkinter as tk
- window=tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- label=tk.Label(window,text='请选择:')
- var=tk.StringVar()
- # 定义函数触发功能:
- def select():
- label.config(text='你是一位'+var.get()+'强者!')
- # command回调selec()函数,value和variable表示函数触发后将value的值给variable
- rdiobutton=tk.Radiobutton(window,text='选项1',variable=var,value='斗皇',command=select)
- rdiobutton1=tk.Radiobutton(window,text='选项2',variable=var,value='斗王',command=select)
- rdiobutton2=tk.Radiobutton(window,text='选项3',variable=var,value='斗宗',command=select)
- label.pack()
- rdiobutton.pack()
- rdiobutton1.pack()
- rdiobutton2.pack()
- # 循环显示
- window.mainloop()
初始效果:
选择一个多选按钮后:
checkbutton多选按钮比Radiobutton按钮高级,可以选择多个按钮,而后者只能选择一个,格式:
tk.Checkbutton=(window_name,text,variable,onvalue,offvalue,command)
例如:
- import tkinter as tk
-
- window = tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- label = tk.Label(window, text='请选择:')
- var = tk.StringVar()
-
-
- # 定义函数触发功能:
- def select():
- label.config(text='你是一位' + var.get() + '强者!')
-
-
- # command回调selec()函数,value和variable表示函数触发后将value的值给variable
- rdiobutton = tk.Radiobutton(window, text='选项1', variable=var, value='斗皇', command=select)
- rdiobutton1 = tk.Radiobutton(window, text='选项2', variable=var, value='斗王', command=select)
- rdiobutton2 = tk.Radiobutton(window, text='选项3', variable=var, value='斗宗', command=select)
- label.pack()
- rdiobutton.pack()
- rdiobutton1.pack()
- rdiobutton2.pack()
- label1 = tk.Label(window, text='可以多选', bg='green',width=20)
- label1.pack()
- var1 = tk.IntVar()
- var2 = tk.IntVar()
-
-
- def option():
- if (var1.get() == 1) & (var2.get() == 0):
- label1.config(text='我爱数学!')
- elif (var1.get() == 0) & (var2.get() == 1):
- label1.config(text='我爱计算机')
- elif (var1.get() == 0) & (var2.get() == 0):
- label1.config(text='什么都不喜欢还学什么编程?')
- else:
- label1.config(text='未来可期!')
- # checkbutton参数和radiobutton参数差不多,onvalue表示选中,offvalue表示选不中,然后把值给variable
-
-
- checkbutton = tk.Checkbutton(window, text='数学', variable=var1, onvalue=1, offvalue=0, command=option)
- checkbutton1 = tk.Checkbutton(window, text='计算机', variable=var2, onvalue=1, offvalue=0, command=option)
- checkbutton.pack()
- checkbutton1.pack()
- # 循环显示
- window.mainloop()
初始:
选择效果:
祝大家未来可期!
Scale滑块就像调节电脑音量大小的滑块一样,如果要定义滑块,需要知道这几个参数:
格式:
tk.Scale(window_name,label,from_,to,height,orient,showvalue,tickinterval,resolution)
例如:
- import tkinter as tk
-
- window = tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- lable=tk.Label(text='音量')
- lable.pack()
- scale=tk.Scale(window,label='垂直音量调节',from_=0,to=100,
- tickinterval=10,showvalue=True,length=150,resolution=0.01,orient=tkinter.VERTICAL)
- scale1=tk.Scale(window,label='水平音量调节',from_=0,to=100,
- tickinterval=10,showvalue=True,length=200,resolution=0.01,orient=tkinter.HORIZONTAL)
- scale.pack()
- scale1.pack()
- # 循环显示
- window.mainloop()
效果:
滚动条要设置的两个步骤:
(1)设置要带有滑动条的标签的yscrollbarcommand为Scrooblbar.set()
(2)设置Scroolbar组件的command为要带滑动条标签的yview()
例如:
- import tkinter as tk
-
- window = tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- scrollbar=tk.Scrollbar(window)
- text=tk.Text(window,yscrollcommand=scrollbar.set)
- scrollbar.config(command=text.yview)
- # scrollbar.pack(side='left',fill='y')
- scrollbar.pack(side='right',fill='y')
- text.pack(side='left')
- # 循环显示
- window.mainloop()
菜单栏创建:
(1)在窗口创建菜单项
- menu_name=tk.Menu(window_name)
- file_menu=tk.Menu(menu_name,tearoff=True/False)
(2)设置菜单栏选项
menu_name.add_cascade(label,file_menu)
(3)菜单栏选项添加内容
file_menu.add_command(label)
(3)窗口加载菜单栏
window.confing(menu=men_name)
- import tkinter as tk
- window = tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- menubar=tk.Menu(window)
- filemeun=tk.Menu(menubar,tearoff=True)
- menubar.add_cascade(label='设置',menu=filemeun)
- filemeun.add_command(label='时间')
- filemeun.add_command(label='语言')
- filemeun.add_separator() # 分隔线
- filemeun.add_command(label='大小')
- filemeun1=tk.Menu(menubar,tearoff=False)
- menubar.add_cascade(label='编辑',menu=filemeun1)
- filemeun2=tk.Menu(menubar,tearoff=False)
- menubar.add_cascade(label='运行',menu=filemeun2)
- window.config(menu=menubar)
- # 循环显示
- window.mainloop()
messagebox使用首先要导入模块:import tkinter.messagebox,使用格式:
tkinter.messagebox.消息类型(title='',message='')
部分消息类型如下:
- import tkinter as tk
- window = tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- import tkinter.messagebox
- tkinter.messagebox.showinfo(title='消息',message='hello world!hello time!')
- tkinter.messagebox.showwarning(title='警告',message='警告!时间已不多')
- tkinter.messagebox.showerror(title='错误',message='编译错误')
- tkinter.messagebox.askquestion(title='问题',message='还有什么问题吗')
- tkinter.messagebox.askyesno(title='选择',message='是否继续学习')
- tkinter.messagebox.askokcancel(title='取消',message='是否取消会议?')
- # 循环显示
- window.mainloop()
这里的布局有grid方格布局,pack方位布局和place自定义布局
grid方格布局:
grid(row,column,padx,pady,ipadx,ipady)
其中row和column分别表示行和列,padx和pady分别表示单元格上下间距和左右间距,ipadx和ipady分别表示单元格内元素的左右间距和上下间距
例如:
- import tkinter as tk
- window = tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- for i in range(3):
- for j in range(3):
- tk.Label(window,text='@').grid(row=i,column=j,padx=10,pady=10,ipadx=10,ipady=10)
- # 循环显示
- window.mainloop()
pack方位布局:
pack我们之前写代码一直在用,它主要原来设置标签的位置,它的参数有:top,bottom,left,right
- import tkinter as tk
- window = tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- label_top=tk.Label(text='上')
- label_bottom=tk.Label(text='下')
- label_left=tk.Label(text='左')
- label_right=tk.Label(text='右')
- label_top.pack(side='top')
- label_bottom.pack(side='bottom')
- label_left.pack(side='left')
- label_right.pack(side='right')
- # 循环显示
- window.mainloop()
place 自定义布局
格式:
place(x,y,anchor)
其中anchor表示锚点,各个方位的锚点如下:
例如:
- import tkinter as tk
-
- window = tk.Tk()
- # 标题
- window.title('hello world')
- # 大小
- window.geometry('500x300')
- tk.Label(window,text='NW').place(x=400,y=200,anchor='nw')
- # 循环显示
- window.mainloop()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。