1、为什么学tkinter

tkinter的优缺点

  • 优点:python3 GUI编程需要图形库,常用的有tkinter,wxWidgets,Qt,GTK等等。但是Python自带的库是仅仅只支持Tk的Tkinter,使用Tkinter,不需要安装任何其他包,就可以直接使用。
  • 缺点:tkinter是十分轻量级的,他没有可视化的控件页面和软件,也没办法开发复杂的桌面应用,只能写一写小巧轻量级的小程序。
  • 综上:tkinter适合日常使用,学习成本低,使用场景广。

用tk创建一个窗体

from tkinter import *windows = Tk()                  #创建一个窗体,赋值给变量
windows.title("First Window")#设置窗体的标题
windows.geometry('500x300')  #设置窗体的大小
windows.mainloop()           #调用这个窗体

2、tkinter常用组件(功能)

1、Label 显示文本

# Windows
from tkinter import *
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Label
label = Label(windows, text='你好!this is Tkinter', bg='green', font=('Arial', 12), width=30, height=2) #创建一个Label
label.pack();                   #讲Label放置到窗体中(随机位置)
label.place(x=108,y=108);     #讲Label放置到窗体中(指定位置)windows.mainloop()

2、Button 定义功能

from tkinter import *#windows
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Label
var = StringVar()               #用var变量接收label的Text
label = Label(windows, textvariable=var, bg='green', font=('Arial', 12), width=30, height=2) #创建一个Label
label.pack();                   #讲Label放置到窗体中(随机位置)
label.place(x=108,y=108);     #讲Label放置到窗体中(指定位置)# Button
# commond = func, 点击时执行。也可以等于DISABLED用来调试
flag = False
def func():global flagif flag == False:flag = Truevar.set('you Find me')else:flag = Falsevar.set('you Hit me')
button = Button(windows, text='ok', font=('Arial,12'), width=10, height=1, command=func)
button.pack()windows.mainloop()

3、Menu 菜单栏

from tkinter import *#windows
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Label显示
label = Label(windows,bg='yellow', width=20, text='empty')
label.pack()#Menu菜单
#定义功能函数
id = 0
def func():global idlabel.config(text='do '+str(id))id += 1
#创建一个菜单栏
menubar = Menu(windows)
#创建一个File菜单项(默认不下拉)
file = Menu(menubar, tearoff=0)
file.add_command(label='New', command=func)#子菜单
file.add_command(label='Open', command=func)
file.add_command(label='Save', command=func)
file.add_separator() #分割线
file.add_command(label='Exit', command=windows.quit)
menubar.add_cascade(label='File', menu=file)#将空菜单放入菜单栏中
#创建一个Edit菜单项
edit = Menu(menubar, tearoff=0)
edit.add_command(label='Cut',command=func)
edit.add_command(label='Copy',command=func)
edit.add_command(label='Paste',command=func)
menubar.add_cascade(label='Edit', menu=edit)
#创建一个二级菜单
sub = Menu(file)
sub.add_command(label='sub1',command=func)
file.add_cascade(label='Import', menu=sub)windows.config(menu=menubar) #设置显示菜单
windows.mainloop()

4、Frame框架

from tkinter import *#windows
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Label显示
label = Label(windows,bg='red', width=20, text='title')
label.pack()#Frame框架
frame = Frame(windows)
frame.pack()
frame_l = Frame(frame)
frame_r = Frame(frame)
frame_l.pack(side='left')
frame_r.pack(side='right')
Label(frame_l, text='frame l[1]', bg='green').pack()
Label(frame_l, text='frame l[2]', bg='green').pack()
Label(frame_l, text='frame l[3]', bg='green').pack()
Label(frame_r, text='frame r[1]', bg='yellow').pack()
Label(frame_r, text='frame r[2]', bg='yellow').pack()
Label(frame_r, text='frame r[3]', bg='yellow').pack()windows.mainloop()

5、messageBox 消息框

from tkinter import *
from tkinter import messagebox#windows
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Button按钮
def func():messagebox.showinfo(title='Hello', message='Hello World')print(messagebox.askquestion(title='Hi', message='Hello World'))  # 询问选择对话窗return 'yes', 'no'
Button(windows, text='click', bg='green', command=func).pack()windows.mainloop()

6、三种不同的位置
pack/grid/place
grid 是方格, 所以所有的内容会被放在这些规律的方格中。padx 是单元格左右间距,pady 是单元格上下间距,ipadx是单元格内部元素与单元格的左右间距,ipady是单元格内部元素与单元格的上下间距。

from tkinter import *
from tkinter import messagebox#windows
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Label
for i in range(3):for j in range(3):Label(windows, text=1).grid(row=i, column=j, padx=10, pady=10, ipadx=10, ipady=10)windows.mainloop()

pack()会按照上下左右排列

from tkinter import *
from tkinter import messagebox#windows
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Label
Label(windows, text='P', fg='red').pack(side='top')    # 上
Label(windows, text='P', fg='red').pack(side='bottom') # 下
Label(windows, text='P', fg='red').pack(side='left')   # 左
Label(windows, text='P', fg='red').pack(side='right')  # 右windows.mainloop()

place()就是放在指定的坐标上就行


3、tkinter常用组件(输入输出)

1、Entry 输入文本(单行)

from tkinter import *#Windows
window = Tk()
window.title("First Window")
window.geometry("500x300")#Label
lbl = Label(window, text="Hello")
lbl.grid(column=0, row=0)#Entry
txt = Entry(window, show='*',width=10) #显示密文, =None显示明文
txt.grid(column=1, row=0)#Button
def clicked():res = "Welcome to " + txt.get() #获取Entry的输入lbl.configure(text=res)         #修改Label中的显示
btn = Button(window, text="Click Me", command=clicked)
btn.grid(column=2, row=0)window.mainloop()

2、Text输入文本(多行)

from tkinter import *#windows
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Entry
e = Entry(windows, show=None)
e.pack()#Button
def func():var = e.get()t.insert('insert',var)
b = Button(windows, text='click me',command=func)
b.pack()#Text
t = Text(windows,height=3)
t.pack()windows.mainloop()

3、Listbox 列表框

from tkinter import *#windows
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Label显示
var = StringVar()
label = Label(windows, textvariable=var, bg='green', fg='yellow',font=('Arial', 12), width=10)
label.pack()#Button方法
def func():res = lb.get(lb.curselection())var.set(res)
btn = Button(windows, text='click me', width=15, height=2, command=func)
btn.pack()#Listbox选择
str = StringVar()
str.set((1,2,3,4))
lb = Listbox(windows, listvariable=str)
list_items = [11,22,33,44]
for x in list_items:lb.insert('end', x)
lb.insert(1,'first') #在第一个位置加入'first'字符
lb.insert(2,'second')#在第二个位置加入'second'字符
lb.delete(2)         #删除第二个位置的字符
lb.pack()windows.mainloop()

4、Radiobutton选择框

from tkinter import *#windows
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Label显示
var = StringVar()
label = Label(windows,bg='yellow', width=20, text='empty')
label.pack()#Radiobutton选项
def func():label.config(text='you have selected'+var.get())
c1 = Radiobutton(windows, text='Option A',value='A', command=func)
c2 = Radiobutton(windows, text='Option B',value='B', command=func)
c3 = Radiobutton(windows, text='Option C',value='C', command=func)
c1.pack()
c2.pack()
c3.pack()windows.mainloop()

5、Checkbutton选择框

from tkinter import *#windows
windows = Tk()
windows.title("First Window")
windows.geometry('500x300')#Label显示
label = Label(windows,bg='yellow', width=20, text='empty')
label.pack()#Checkbutton选项
def func():if (var1.get() == 1) & (var2.get() == 0):label.config(text='I love only Python ')elif (var1.get() == 0) & (var2.get() == 1):label.config(text='I love only C++')elif (var1.get() == 0) & (var2.get() == 0):label.config(text='I do not love either')else:label.config(text='I love both')
var1 = IntVar()
var2 = IntVar()
c1 = Checkbutton(windows, text='Python',variable=var1, onvalue=1, offvalue=0, command=func)
c2 = Checkbutton(windows, text='C++', variable=var2, onvalue=1, offvalue=0, command=func)
c1.pack()
c2.pack()windows.mainloop()

Python3 GUI编程: 自带图形库 tkinter 学习教程相关推荐

  1. python小老鼠编程_成都python函数学习教程,Python编写课程

    1.urllib2/urllib实现urllib2和urllib是Python中的两个内置模块,要实现HTTP功能,实现方式是以urllib2为主,urllib为辅.1.1首先实现一个完整的请求与响应 ...

  2. python高级语法-GUI编程(主要介绍tkinter)

    首先,这里必须强调,尽管python的创始人提到过python没有主打领域,后来者可以无限丰富它,但是时至今日, python语言已经找到了自己的路,但这些路里面绝对没有GUI开发.所以这里只做粗浅的 ...

  3. Python3 GUI编程入门程序示例

  4. linux 移除python_第16 p,PYthon中的用户交互,Python GUI编程

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第16篇文章,第二阶段的课程:Python基础知识:PYthon中的用户交互.Python GUI编程实现方式介绍. 学习本课程,建 ...

  5. java gui是什么_Java GUI编程(一)

    ********************第16章 GUI编程 ************************** 一.什么是GUI GUI= Graphical User Interface 图形用 ...

  6. [Python-9]GUI编程

    一.GUI图形用户界面编程介绍 我们前面实现的都是基于控制台的程序,程序和用户的交互通过控制台来完成. 本章,我们将学习GUI(Graphics User Interface),即图形用户界面编程,我 ...

  7. python3.6运行界面_python3.6 +tkinter GUI编程 实现界面化的文本处理工具

    更新: 2017.07.17 补充滚动条.win批处理拉起py 2017.08.13 新增自定义图标 --------原创 blogs: http://www.cnblogs.com/chenyueb ...

  8. python3.6 +tkinter GUI编程 实现界面化的文本处理工具

    更新: 2017.07.17 补充滚动条.win批处理拉起py 2017.08.13 新增自定义图标 --------原创      blogs:    http://www.cnblogs.com/ ...

  9. python的messagebox的用法_Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解...

    本文实例讲述了Python GUI编程学习笔记之tkinter中messagebox.filedialog控件用法.分享给大家供大家参考,具体如下: 相关内容: messagebox 介绍 使用 fi ...

最新文章

  1. Phoenix二级索引(Secondary Indexing)的使用(转:https://www.cnblogs.com/MOBIN/p/5467284.html)
  2. python图像分类代码_python实现支持向量机遥感图像分类
  3. mysql 禁止使用enum_MySQL慎用 ENUM 字段
  4. 在Linux下使用iconv转换字符串编码
  5. (70)FPGA面试题-使用不同的代码实现2:1 MUX ?使用case语句
  6. 有望年底登场!小米12系列即将备案:骁龙895+2亿像素!
  7. qt绘图事件(画刷的填充)
  8. 【渝粤教育】电大中专工程图学基础作业 题库
  9. 【手机主题字体】暗恋笔记ttf
  10. win10系统怎么打开pdf文件
  11. 计算机地图制图pdf,《计算机地图制图》课件简介.pdf
  12. 什么是亚马逊强关联,亚马逊账号关联详解
  13. 元宇宙大热,是风口还是虎口
  14. 06.论Redis持久化的几种方式
  15. 搭建Window10 VNC远程访问ubuntu20.04
  16. Android系统的Ashmem匿名共享内存子系统分析(4)- Ashmem子系统的 Java访问接口
  17. IntelliJ IDEA / Eclipse 自动生成 Author 注释 签名
  18. MATLAB作图技巧汇总
  19. Ubuntu 16.04-18.04中安装 WPS Office 2016 for Linux(集合篇含字体解决方法)简单好用
  20. 如何通过 nginx 实现远程投屏并控制 android 手机

热门文章

  1. 一题多解 —— 二项式分布的期望和方差的计算
  2. 数据网站(数据集的获取)、打分网站
  3. 济南大学转专业计算机面试难吗,我校2016-2017学年学生转专业工作结束
  4. html军事学校模板,军事训练学校网站模板
  5. android 通过短信找回密码,如何通过强力安卓恢复精灵找回丢失的手机短信?
  6. python从入门到精通 明日科技 电子书-Python从入门到精通(明日科技出版) 源代码+课件+视频 全套...
  7. python在线学习直播-马哥教育官网-专业Linux培训班,Python培训机构
  8. python与java区别-Java与Python到底有什么区别和共同点详细对比
  9. python是什么类型的编程语言-python是一种什么类型的语言
  10. python学习网站-有哪些值得推荐的Python学习网站?