第一章 概述
背景
tkinter是Tk的python接口,Tk是Tcl/Tk的GUI工具包。Tcl是脚本语言,Tk是图形库,跨平台。
tkinter的优势 简单易学 跨平台 标准库无需安装 tcl解释器用C语言写成。
简单概念
GUI编程得三个核心问题: 屏幕上应显示哪些组件、组件如何放置、组件如何交互。
import tkinter as tk root=tk.Tk() root.mainloop() | import tkinter as tk root=tk.Tk() lb=tk.Label(root,text=”Label”) lb.pack() root.mainloop() | import tkinter as tk root=tk.Tk() bt=tk.Button(root,text=”Button”) lb.pack() root.mainloop() |
布局管理 pack布局 grid布局 place布局
事件和回调 用户按下键或者鼠标时候,程序做出反应,示例如下
import tkinter as tk def callback(): print(‘被点击了’) root=tk.Tk() tk.Button(root,text=’点击’,command=callback).pack() root.mainloop() |
给初学者建议
轻量级 够用 掌握常用 不常用的查文挡 重点布局学习 不盯着细节
第二章 基础入门
基本控件1
一共是6个基本控件学习: 标签 按钮 多选框 输入框 单选框
标签Label from tkinter import * python的image属性仅支持gif pgm ppm格式 bitmap支持xbm格式 设置方法:PIL库过时了,用Pillow库 photo=PhontoImage(file=’’image.gif) bmp=BitmapImage(file=’logo.xbm’) label=Label(root,image=photo) | 如果要用其它格式图片,下载并按照Pillow库后: from tkinter import * |
贴纸:you-get库使用 pip install you-get #安装库 you-get -i 网址 #对视频进行解析 you-get -o 要保存位置 网址 Pychram中ctrl+/ 批量用#注释代码 | 保存不同画质方法 you-get -i 网址 #对视频进行解析 关注-format you-get --format == mp4hd -o D:/ 网址 You-get -u 网址 #得到真实地址 you-get --json 网址 #得到json格式信息 |
贴纸:http.server服务器 搭建本地局域网 ctrl+C结束 python -m http.server #默认端口 8000 结果:Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ... python -m http.server 8888 #指定端口8888 结果:Serving HTTP on 0.0.0.0 port 8888 (http://0.0.0.0:8888/) ... ipconfig/all 可以获取本机ip地址 |
基本控件2
Button按钮 from tkinter import * tk=Tk() def onclick(): print(‘how are you‘) Button(tk,text=‘确定‘,command=onclick).pack() tk.mainloop() | Checkbutton多选按钮 from tkinter import * def sel(): val=‘多选按钮状态:‘+ str(v.get()) print(val) tk=Tk() v=IntVar() Checkbutton(tk,text=‘男人‘,variable=v,command=sel).pack() tk.mainloop() 方法 deselect()清楚状态 flash()闪烁 invoke()获操作 select()设置为选中 toggle()反选 |
Entry单行输入文本框 text属性无效 from tkinter import * tk=Tk() val=StringVar() #跟踪变量 val.set(‘输入。。。‘) Entry(tk,textvariable=val).pack() tk.mainloop() ent=Entry(tk,show=’*’) ent.pack() 还有许多参数和方法,用到再查询。 | Radiobutton单选按钮 有组的概念 from tkinter import * def sel(): val=‘单选按钮状态:‘+ str(v.get()) print(val) tk=Tk() v=IntVar() Radiobutton(tk,text=‘男‘,variable=v,value=1,command=sel).pack() Radiobutton(tk,text=‘女‘,variable=v,value=2,command=sel).pack() tk.mainloop() |
基本控件3
Scale 滑块组件 from tkinter import * tk=Tk() v=IntVar() Scale(tk,orient=‘horizonta‘,variable=v,from_=0,to=200,tickinterval=50,length=200).pack() # vertical水平方向 tk.mainloop() |
跟踪控件的值 为了响应控件值变化 Tkinter提供自己的类,它们可以用来跟踪这些小控件的值。 字符型 my_string=tk.StringVar() 布尔型 ticked_yes=tk.BooleanVar() 整数型 group_choice=tk.IntVar() 浮点型 volume=tk.DoubleVar() 将变量类与控件关联起来 tk.Checkbutton(root,text=’选我’,variable=ticked_yes) tk.Radiobutton(root,text=’点我’,variable=group_choice) tk.Scale(root,label=’音量’,variable=volume) |
from tkinter import * from PIL import Image,ImageTk def fun1(): print(‘确认按钮被点击了‘) def sel(): mes="多选按钮状态改变" print(mes) def shut(): mess=‘单选按钮选择:‘+str(one.get()) print(mess) #窗口建立 tk=Tk() tk.title(‘我的程序‘) tk.geometry(‘400x400+500+300‘) tk.resizable(0,0) #文字标签 lb1=Label(tk,text=‘我是个文字标签‘) lb1.pack() #图片标签 img=Image.open(‘ni.bmp‘) photo=ImageTk.PhotoImage(img) lb2=Label(tk,image=photo) lb2.pack() #按钮 bt1=Button(tk,text=‘确 认‘,command=fun1) bt1.pack() #单行输入 账号 val=StringVar() #设置跟踪变量 val.set(‘恭喜发财‘) en1=Entry(tk,textvariable=val) en1.pack() #单行输入 密码 en1=Entry(tk,show=‘*‘) en1.pack() #多选按钮 check1=Checkbutton(tk,text=‘唱歌‘,command=sel) check1.pack() #单选按钮 one=IntVar() radio1=Radiobutton(tk,text=‘男‘,variable=one,value=1,command=shut) radio1.pack() radio2=Radiobutton(tk,text=‘女‘,variable=one,value=2,command=shut) radio2.pack() #滑块组件 x=IntVar() sca=Scale(tk,label=‘音量‘,orient=‘horizonta‘,from_=0,to=100,tickinterval=10,length=200) sca.pack() #程序主循环 tk.mainloop() |
https://study.163.com/course/courseLearn.htm?courseId=1209232809&share=1&shareId=1390377083#/learn/video?lessonId=1278884646&courseId=1209232809
pack布局1 略
pack布局2 略
原文:https://www.cnblogs.com/tankercode/p/14358044.html