当前位置:   article > 正文

python玄阶斗技--tkinter库

tkinter库

目录

一.tkinter库介绍

二.功能实现

1.窗口创建

2.Button 按钮 

3.Entry 文本输入域

4.text 文本框

5.Listbox 多选下拉框

6.Radiobutton 多选项按钮

7.Checkbutton 多选按钮 

8.Scale 滑块(拉动条)

9.Scroolbar 滚动条

10.Menu 菜单栏

11. messagebox 消息框

12.布局


一.tkinter库介绍

        tkinter是python进行窗口视窗设计的模块,是python中一个比较简单的GUI编程库,对于大多数python学习者来说,tkinter还是挺容易上手的,而且tkinter还是python自带的库,无需下载就可以直接使用。python的GUI编程和java的GUL编程很相似,这里推荐:JAVA GUI编程

        这里主要介绍tkinter几个功能部件,掌握之后自己编写一个GUI程序不成问题:

  • Button 按钮功能模块
  • Canv  画布,提供画图功能
  • Checkbutton 复选框
  • Entry 单行文本框
  • Frame 框架,放置其他GUI元素的容器
  • Labe 标签,用于显示文本或图片
  • Listbox 列表框
  • Menu 菜单项,提供选择项给用户选择
  • Menubutton 菜单按钮,包含菜单的组件
  • optionMenu 选择菜单
  • Message 消息框
  • Radiobutton 单选框
  • Scale 进度条
  • Scroollbar 滚动条
  • Text 文本

messageBox 消息框


二.功能实现

1.窗口创建

        窗口的创建包括导入tkinter库,定义窗口标题(title)和窗口大小(geometry),最后通过窗口循环显示mainloop()显示出来,例如:

  1. import tkinter as tk
  2. window=tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. # 循环显示
  8. window.mainloop()

窗口:


2.Button 按钮 

        窗口我们已经创建了,现在我们来创建一个Button按钮,创建格式:

tk.Button(window_name,text='',command='回调功能')

例如:

  1. import tkinter as tk
  2. window=tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. # 按钮
  8. bt=tk.Button(window,text='确定',bg='green')
  9. bt.pack() # 窗口加载
  10. # 循环显示
  11. window.mainloop()

显示一个绿色按钮


3.Entry 文本输入域

        格式:

tk.Entry(window_name,show=' ',font=('字体,大小 ')

其中show表示输入后的文本显示内容,如果show=‘*’,输入密文,不定义show表示明文输出

例如:

  1. mport tkinter as tk
  2. window=tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. entry=tk.Entry(window,font=('微软黑体',20))
  8. entry1=tk.Entry(window,show='*',font=('微软黑体',20))
  9. entry2=tk.Entry(window,show='@',font=('微软黑体',20))
  10. entry.pack()
  11. entry1.pack()
  12. entry2.pack()
  13. # 循环显示
  14. window.mainloop()

效果:


4.text 文本框

        text文本框和Entry都可以输入文本,只不过text是多行文本框,支持输入多行文本,而Entry是单行文本

格式:

tk.Text(window_name,height)

 例如:

  1. import tkinter as tk
  2. window=tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. text=tk.Text(window,height=3)
  8. text.pack()
  9. # 循环显示
  10. window.mainloop()


5.Listbox 多选下拉框

        Listbox以下拉的方式通过多选框,格式:

tk.Listbox(window_name,listvable)

例如:

  1. import tkinter as tk
  2. window=tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. label=tk.Label(window,text='请选择:')
  8. ver=tk.StringVar()
  9. ver.set(('杨幂','刘亦菲','林志玲'))
  10. lsitbox=tk.Listbox(window,listvariable=ver,height=4)
  11. label.pack()
  12. lsitbox.pack()
  13. # 循环显示
  14. window.mainloop()

 


6.Radiobutton 多选项按钮

        多选按钮定义格式:

tk.radiobutton(window_name,text,variable,value,command)

例如:

  1. import tkinter as tk
  2. window=tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. label=tk.Label(window,text='请选择:')
  8. var=tk.StringVar()
  9. # 定义函数触发功能:
  10. def select():
  11. label.config(text='你是一位'+var.get()+'强者!')
  12. # command回调selec()函数,value和variable表示函数触发后将value的值给variable
  13. rdiobutton=tk.Radiobutton(window,text='选项1',variable=var,value='斗皇',command=select)
  14. rdiobutton1=tk.Radiobutton(window,text='选项2',variable=var,value='斗王',command=select)
  15. rdiobutton2=tk.Radiobutton(window,text='选项3',variable=var,value='斗宗',command=select)
  16. label.pack()
  17. rdiobutton.pack()
  18. rdiobutton1.pack()
  19. rdiobutton2.pack()
  20. # 循环显示
  21. window.mainloop()

       初始效果:

选择一个多选按钮后:


7.Checkbutton 多选按钮 

        checkbutton多选按钮比Radiobutton按钮高级,可以选择多个按钮,而后者只能选择一个,格式:

tk.Checkbutton=(window_name,text,variable,onvalue,offvalue,command)

例如:

  1. import tkinter as tk
  2. window = tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. label = tk.Label(window, text='请选择:')
  8. var = tk.StringVar()
  9. # 定义函数触发功能:
  10. def select():
  11. label.config(text='你是一位' + var.get() + '强者!')
  12. # command回调selec()函数,value和variable表示函数触发后将value的值给variable
  13. rdiobutton = tk.Radiobutton(window, text='选项1', variable=var, value='斗皇', command=select)
  14. rdiobutton1 = tk.Radiobutton(window, text='选项2', variable=var, value='斗王', command=select)
  15. rdiobutton2 = tk.Radiobutton(window, text='选项3', variable=var, value='斗宗', command=select)
  16. label.pack()
  17. rdiobutton.pack()
  18. rdiobutton1.pack()
  19. rdiobutton2.pack()
  20. label1 = tk.Label(window, text='可以多选', bg='green',width=20)
  21. label1.pack()
  22. var1 = tk.IntVar()
  23. var2 = tk.IntVar()
  24. def option():
  25. if (var1.get() == 1) & (var2.get() == 0):
  26. label1.config(text='我爱数学!')
  27. elif (var1.get() == 0) & (var2.get() == 1):
  28. label1.config(text='我爱计算机')
  29. elif (var1.get() == 0) & (var2.get() == 0):
  30. label1.config(text='什么都不喜欢还学什么编程?')
  31. else:
  32. label1.config(text='未来可期!')
  33. # checkbutton参数和radiobutton参数差不多,onvalue表示选中,offvalue表示选不中,然后把值给variable
  34. checkbutton = tk.Checkbutton(window, text='数学', variable=var1, onvalue=1, offvalue=0, command=option)
  35. checkbutton1 = tk.Checkbutton(window, text='计算机', variable=var2, onvalue=1, offvalue=0, command=option)
  36. checkbutton.pack()
  37. checkbutton1.pack()
  38. # 循环显示
  39. window.mainloop()

初始:

 选择效果:

祝大家未来可期! 


8.Scale 滑块(拉动条)

        Scale滑块就像调节电脑音量大小的滑块一样,如果要定义滑块,需要知道这几个参数:

  • from_ 滑块起始位置
  • to 结束位置
  • lenght 长度
  • showvalue 是否显示数值
  • tickinterval 刻度单位
  • orient 滑动方向,orient=tk.HORIZONTAL表示水平滑动
  • lable lable标签,起提示作用
  • resolution 精度

格式:

tk.Scale(window_name,label,from_,to,height,orient,showvalue,tickinterval,resolution)

      例如:

  1. import tkinter as tk
  2. window = tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. lable=tk.Label(text='音量')
  8. lable.pack()
  9. scale=tk.Scale(window,label='垂直音量调节',from_=0,to=100,
  10. tickinterval=10,showvalue=True,length=150,resolution=0.01,orient=tkinter.VERTICAL)
  11. scale1=tk.Scale(window,label='水平音量调节',from_=0,to=100,
  12. tickinterval=10,showvalue=True,length=200,resolution=0.01,orient=tkinter.HORIZONTAL)
  13. scale.pack()
  14. scale1.pack()
  15. # 循环显示
  16. window.mainloop()

效果:


9.Scroolbar 滚动条

        滚动条要设置的两个步骤:

(1)设置要带有滑动条的标签的yscrollbarcommand为Scrooblbar.set()

(2)设置Scroolbar组件的command为要带滑动条标签的yview()

        例如:

  1. import tkinter as tk
  2. window = tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. scrollbar=tk.Scrollbar(window)
  8. text=tk.Text(window,yscrollcommand=scrollbar.set)
  9. scrollbar.config(command=text.yview)
  10. # scrollbar.pack(side='left',fill='y')
  11. scrollbar.pack(side='right',fill='y')
  12. text.pack(side='left')
  13. # 循环显示
  14. window.mainloop()


10.Menu 菜单栏

        菜单栏创建:

(1)在窗口创建菜单项

  1. menu_name=tk.Menu(window_name)
  2. 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)
  1. import tkinter as tk
  2. window = tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. menubar=tk.Menu(window)
  8. filemeun=tk.Menu(menubar,tearoff=True)
  9. menubar.add_cascade(label='设置',menu=filemeun)
  10. filemeun.add_command(label='时间')
  11. filemeun.add_command(label='语言')
  12. filemeun.add_separator() # 分隔线
  13. filemeun.add_command(label='大小')
  14. filemeun1=tk.Menu(menubar,tearoff=False)
  15. menubar.add_cascade(label='编辑',menu=filemeun1)
  16. filemeun2=tk.Menu(menubar,tearoff=False)
  17. menubar.add_cascade(label='运行',menu=filemeun2)
  18. window.config(menu=menubar)
  19. # 循环显示
  20. window.mainloop()


11. messagebox 消息框

        messagebox使用首先要导入模块:import tkinter.messagebox,使用格式:

tkinter.messagebox.消息类型(title='',message='')

部分消息类型如下:

  1. import tkinter as tk
  2. window = tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. import tkinter.messagebox
  8. tkinter.messagebox.showinfo(title='消息',message='hello world!hello time!')
  9. tkinter.messagebox.showwarning(title='警告',message='警告!时间已不多')
  10. tkinter.messagebox.showerror(title='错误',message='编译错误')
  11. tkinter.messagebox.askquestion(title='问题',message='还有什么问题吗')
  12. tkinter.messagebox.askyesno(title='选择',message='是否继续学习')
  13. tkinter.messagebox.askokcancel(title='取消',message='是否取消会议?')
  14. # 循环显示
  15. window.mainloop()


12.布局

         这里的布局有grid方格布局,pack方位布局和place自定义布局

grid方格布局:

grid(row,column,padx,pady,ipadx,ipady)

其中row和column分别表示行和列,padx和pady分别表示单元格上下间距和左右间距,ipadx和ipady分别表示单元格内元素的左右间距和上下间距

例如:

  1. import tkinter as tk
  2. window = tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. for i in range(3):
  8. for j in range(3):
  9. tk.Label(window,text='@').grid(row=i,column=j,padx=10,pady=10,ipadx=10,ipady=10)
  10. # 循环显示
  11. window.mainloop()


pack方位布局:

        pack我们之前写代码一直在用,它主要原来设置标签的位置,它的参数有:top,bottom,left,right

  1. import tkinter as tk
  2. window = tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. label_top=tk.Label(text='上')
  8. label_bottom=tk.Label(text='下')
  9. label_left=tk.Label(text='左')
  10. label_right=tk.Label(text='右')
  11. label_top.pack(side='top')
  12. label_bottom.pack(side='bottom')
  13. label_left.pack(side='left')
  14. label_right.pack(side='right')
  15. # 循环显示
  16. window.mainloop()

place 自定义布局

        格式:

place(x,y,anchor)

其中anchor表示锚点,各个方位的锚点如下:

 例如:

  1. import tkinter as tk
  2. window = tk.Tk()
  3. # 标题
  4. window.title('hello world')
  5. # 大小
  6. window.geometry('500x300')
  7. tk.Label(window,text='NW').place(x=400,y=200,anchor='nw')
  8. # 循环显示
  9. window.mainloop()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/517196
推荐阅读
相关标签
  

闽ICP备14008679号