GUI编程Tkinter

Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下:

  • Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。
  • wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。
  • Jython:Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。

from tkinter import *
root = Tk() # 创建窗口对象的背景色
li = ['C','python','php','html','SQL','java']
listb = Listbox(root) # 创建列表组件
for item in li: # 第一个小部件插入数据
listb.insert(0,item)
listb.pack() # 将小部件放置到主窗口中
root.mainloop() # 进入消息循环

Tkinter 组件

Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。

控件 描述
Listbox 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton 菜单按钮控件,用于显示菜单项
Menu 菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message 消息控件;用来显示多行文本,与label比较类似
Radiobutton 单选按钮控件;显示一个单选的按钮状态
Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text 文本控件;用于显示多行文本
Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
LabelFrame labelframe 是一个简单的容器控件。常用与复杂的窗口布局。
tkMessageBox 用于显示你应用程序的消息框。

标准属性

标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。

属性 描述
Dimension 控件大小
Color 控件颜色
Font 控件字体
Anchor 锚点
Relief 控件样式
Bitmap 位图
Cursor 光标

几何管理

Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,以下是Tkinter公开的几何管理类:包、网格、位置

几何方法 描述
pack() 包装 expand=1控件随窗口缩放,放置在中央
grid() 网格
place() 位置

1.Button按钮组件

w = Button ( master , option=value , ... )

master: 按钮的父容器

1.1 options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。
  • bg 按钮的颜色
  • activebackground 当鼠标点击时按钮的背景色
  • fg 按钮文本的颜色
  • activeforeground 当鼠标点击时按钮文本的颜色
  • bd 按钮边框的大小,默认为 2 个像素
  • command 按钮关联的函数,当按钮被点击时,执行该函数
  • font 文本字体
  • height 按钮的高度
  • width 按钮的宽度,如未设置此项,其大小以适应按钮的内容(文本或图片的大小)
  • highlightcolor 要高亮的颜色
  • image 按钮上要显示的图片
  • justify 显示多行文本时设置不同行之间的对齐方式,可选LEFT,RIGHT, CENTER
  • padx 按钮在x轴方向上的内边距(padding),是指按钮的内容与按钮边缘的距离
  • pady 按钮在y轴方向上的内边距(padding)
  • relief 边框样式,设置控件3D效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT
  • state 设置按钮组件状态,可选的有NORMAL、ACTIVE、 DISABLED。默认NORMAL
  • underline下划线。默认按钮上的文本都不带下划线。取值就是带下划线的字符串索引,为 0 时,第一个字符带下划线,为 1 时,前两个字符带下划线,以此类推
  • wraplength 限制按钮每行显示的字符的数量
  • text 按钮的文本内容
  • anchor 锚选项,控制文本的位置,默认为中心,n,nw,ne,s,nw,ne,center
1.2 组件常用方法
  1. deselect() 清除单选按钮的状态
  2. flash() 在激活状态颜色和正常颜色之间闪烁几次单选按钮,但保持它开始时的状态。
  3. invoke() 可以调用此方法来获得与用户单击单选按钮以更改其状态时发生的操作相同的操作
  4. select() 设置单选按钮为选中。
1.3 示例
import tkinter
import tkinter.messagebox as tkMessageBox
from PIL import Image,ImageTk
root = tkinter.Tk()
root.title("wenyu`s window")
root.geometry("300x500")
def hello():
tkMessageBox.showinfo( "Hello wenyu","Hello wenyu")
imga=Image.open("benxi.jpg")
img=ImageTk.PhotoImage(imga)
B = tkinter.Button(root,activebackground="yellow",activeforeground="green",bd="2",bg="pink",command = hello,fg="white",font="Arial",height="2",
width="8",highlightcolor="pink",padx="0",pady="0",wraplength="1",justify="left",state="normal",underline="1",text ="菜单")
B.pack()
root.mainloop()

2. Canvas画布

w = Canvas ( master, option=value, ... )

2.1 options

bd , bg , height , highlightcolor , width ,

  • confine 如果为 true (默认), 画布不能滚动到可滑动的区域外
  • cursor 光标的形状设定,如arrow, circle, cross, plus 等
  • relief 边框样式,可选值为FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认FLAT
  • scrollregion 一个元组 tuple (w, n, e, s) ,定义了画布可滚动的最大区域,w 为左边,n 为头部,e 为右边,s 为底部
  • xscrollincrement 用于滚动请求水平滚动的数量值
  • xscrollcommand 水平滚动条,如果画布是可滚动的,则该属性是水平滚动条的 .set()方法
  • yscrollincrement 类似 xscrollincrement, 但是垂直方向
  • yscrollcommand 垂直滚动条

2.2 Canvas 组件支持以下标准选项:

  • arc − 创建一个扇形
canvas=Canvas(root,bg='pink',width=500,height=500)    #初始化canvas
canvas.pack()
coord = 50, 50, 200, 200 #坐标起始点
arc = canvas.create_arc(coord, start=0, extent=90, fill="white",style=PIESLICE,dash=(15,2,5,2),outline='red',width=10)

start: 从x轴正方向(起始方向)开始,单位为度进行绘制

extent: 以start参数给定的角度开始,逆时针延伸角度

create_arc 参数style、dash、outline、width:

  1. style 参数有 ARC、CHORD 以及 PIESLICE;默认情况下为 PIESLICE
  2. dash 参数类型为元组,用于设定虚线线段。例如 dash=(3,4) 中,值3为指定绘制多少个像素的线段,值4为下一条线段绘制需要间隔多少个像素
  3. outline 用于设置绘制的线段颜色,默认为黑色
  4. width设置绘制成的图形边框的粗细,默认单位为像素
  • image − 创建图像
canvas=Canvas(root,bg='pink',width=500,height=500)
canvas.pack()
imga=Image.open("benxi.jpg")
image=ImageTk.PhotoImage(imga)
img=canvas.create_image(5,5,anchor=NW,image=image)
  • line − 创建线条

    line = canvas.create_line(x0, y0, x1, y1, ..., xn, yn, options)

    line=canvas.create_line(5,5,500,500,fill='white')
  • oval − 创建一个圆

    oval = canvas.create_oval(x0, y0, x1, y1, options)

    oval=canvas.create_oval(100,100,200,200,fill='white')
  • polygon − 创建一个至少有三个顶点的多边形

    oval = canvas.create_polygon(x0, y0, x1, y1,...xn, yn, options)

    oval=canvas.create_polygon(100,100,100,200,200,100,fill='white')

2.3 实例

from tkinter import *
import tkinter.messagebox as tkMessageBox
root=Tk()
cv = Canvas(root,bg='white') # 创建一个矩形,指定画布的颜色为白色
cv.create_rectangle(50,50,150,150)
cv.pack()
root.mainloop()

3. Checkbutton复选框

w = Checkbutton ( master, option=value, ... )

options: activebackground, activeforeground, bg, bitmap位图,bd,command,cursor, disabledforeground 禁用前景色,font,fg,height,highlightcolor,image是否使用图标,justify,padx,pady,relief,selectcolor,selectimage选中后图片,state,text,underline,width,wraplength,variable=1选中,offvalue,onvalue状态

  • variable 默认设置为1表示选中状态,反之设置为 0。可以使用 onvalue 和 offvalue 选项修改值
var=StringVar()
var.set("T")
c1=Checkbutton(root,text="biu",variable=var,onvalue="T",offvalue="F",height=5,width=20)
c1.pack()

3.1 方法

  • deselect() 取消组件的选中状态,设置 variable 为 offvalue.
  • flash() 在激活状态颜色和正常颜色之间闪烁几次单选按钮,但保持它开始时的状态
  • invoke() 调用command 选项指定的函数或方法,并返回函数的返回值
  • select() 设置按钮为选中,设置 variable 为 onvalue
  • toggle() 切换 Checkbutton 组件的状态(选中 -> 未选中 / 未选中 -> 选中)

3.2 实例

from tkinter import *
import tkinter.messagebox as tkMessageBox
root=Tk()
var=IntVar()
c1=Checkbutton(root,text="biu",variable=var,onvalue=1,offvalue=0,height=5,width=20)
c1.pack()
root.mainloop()

4. Entry文本框

w = Entry( master, option, ... ) 用来让用户输入一行文本字符串

options: bg, bd, cursor, font, fg, highlightcolor, justify, relief, selectbackground, selectborderwidth, selectforeground, state, width, xscrollcommand

  • exportselection 默认情况下,如果在输入框中选中文本,默认会复制到粘贴板,如果要忽略这个功能设置 exportselection=0
  • show 指定文本框内容显示为字符,值随意,满足字符即可。如密码可以将值设为 show="*"
  • textvariable 文本框的值,是一个StringVar()对象

4.1 方法

  • delete ( first, last=None ) #删除文本框里位置值
  • get() 获取文件框的值
  • icursor ( index ) 将光标移动到指定索引位置,只有当文框获取焦点后成立
  • index ( index ) 返回指定的索引值
  • insert ( index, s ) 向文本框中插入值
  • select_adjust ( index ) 选中指定索引和光标所在位置之前的值
  • select_clear() 清空文本框
  • select_from ( index ) 设置光标的位置
  • select_present() 如果有选中,返回 true,否则返回 false
  • select_range ( start, end ) 选中指定索引位置的值
  • select_to ( index ) 选中指定索引与光标之间的值
  • xview ( index ) 该方法在文本框链接到水平滚动条上很有用。
  • xview_scroll ( number, what ) 用于水平滚动文本框。 what 参数可以是 UNITS, 按字符宽度滚动,或者可以是 PAGES, 按文本框组件块滚动。 number 参数,正数为由左到右滚动,负数为由右到左滚动。

4.2 实例

from tkinter import *
root=Tk()
L=Label(root,text="网站名")
L.pack(side=LEFT)
E=Entry(root,bd=5)
E.pack(side=RIGHT)
root.mainloop()

5. Frame框架

w = Frame ( master, option, ... ) 在屏幕上显示一个矩形区域,多用来作为容器。

options:bg, bd, cursor, height, highlightbackground, highlightcolor, highlightthickness, relief, width,

  • takefocus 指定该组件是否接受输入焦点(用户可以通过 tab 键将焦点转移上来),默认为 false

5.1 实例

from tkinter import *
root=Tk()
def say_hi():
print("hello!")
frame=Frame(root)
hi=Button(frame,text="say hi",command=say_hi)
hi.pack()
frame.pack(padx=1,pady=1)
root.mainloop()

6. Label

w = Label ( master, option, ... ) 标签控件(Label)指定的窗口中显示的文本和图像

options:anchor, bg, bd, bitmap, cursor, font, fg, height, image, justify, pady, padx, relief, text, textvariable, underline, width, wraplength

6.1 实例

from tkinter import *
root=Tk()
w = Label(root, text="Hello WENYU!")
w.pack()
root.mainloop()

Python GUI编程之Tkinter的更多相关文章

  1. pytho GUI编程之Tkinter

    摘录 python核心编程s GUI(Graphical User Interface)图形用户界面. Tcl.Tk和Tkinter Tkinter是python的默认GUI库.它基于Tk工具包,该工 ...

  2. Python GUI编程之WxPython

    https://en.wikipedia.org/wiki/WxPython 官网: Overview of wxPython: https://wxpython.org/pages/overview ...

  3. Python 多进程编程之multiprocessing--Pool

    Python 多进程编程之multiprocessing--Pool ----当需要创建的子进程数量不多的时候,可以直接利用multiprocessing 中的Process 动态生成多个进程, -- ...

  4. Python 多进程编程之multiprocessing--Process

    Python 多进程编程之multiprocessing 1,Process 跨平台的进程创建模块(multiprocessing), 支持跨平台:windowx/linux 创建和启动      创 ...

  5. python并发编程之Queue线程、进程、协程通信(五)

    单线程.多线程之间.进程之间.协程之间很多时候需要协同完成工作,这个时候它们需要进行通讯.或者说为了解耦,普遍采用Queue,生产消费模式. 系列文章 python并发编程之threading线程(一 ...

  6. python并发编程之gevent协程(四)

    协程的含义就不再提,在py2和py3的早期版本中,python协程的主流实现方法是使用gevent模块.由于协程对于操作系统是无感知的,所以其切换需要程序员自己去完成. 系列文章 python并发编程 ...

  7. python并发编程之asyncio协程(三)

    协程实现了在单线程下的并发,每个协程共享线程的几乎所有的资源,除了协程自己私有的上下文栈:协程的切换属于程序级别的切换,对于操作系统来说是无感知的,因此切换速度更快.开销更小.效率更高,在有多IO操作 ...

  8. python并发编程之multiprocessing进程(二)

    python的multiprocessing模块是用来创建多进程的,下面对multiprocessing总结一下使用记录. 系列文章 python并发编程之threading线程(一) python并 ...

  9. python并发编程之threading线程(一)

    进程是系统进行资源分配最小单元,线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.进程在执行过程中拥有独立的内存单元,而多个线程共享内存等资源. 系列文章 py ...

  10. Python函数式编程之map()

    Python函数式编程之map() Python中map().filter().reduce()这三个都是应用于序列的内置函数. 格式: map(func, seq1[, seq2,…]) 第一个参数 ...

随机推荐

  1. M1 安装apache tomcat

    一.下载以及安装 1.Tomcat(官网:http://tomcat.apache.org/) 2.找到需要的版本:我用的9版本 二.将下载的文件放在自己一个目录下去 三.设置Apache环境路径 e ...

  2. Stream流、lambda表达式、方法引用、构造引用

    函数式接口 函数接口为lambda表达式和方法引用提供目标类型,就是提供支持的接口里面只有且必须只有一个抽象方法, 如果接口只有一个抽象方法,java默认他为函数式接口 @FunctionalInte ...

  3. C++11之线程库

    在 C++11 之前,涉及到多线程问题,都是和平台相关的,比如 Windows 和 Linux 下各有自己的接口,这使得代码的可移植性比较差.C++11 中最重要的特性就是对线程进行支持了,并且可以跨 ...

  4. 查询正在执行的SQL的数据库名和表名

    创建限制0.5个CPU和0.5G内存的MySQL容器 docker run -itd --name mysql --cpu-quota=50000 --memory 512M --rm -p 3306 ...

  5. 百题计划-3 codeforces 657div2 C. Choosing flowers 贪心+枚举+二分

    https://codeforces.com/contest/1379/problem/C 题意: 给m种花(a,b),从中取出n朵,每种花可以取0和无限朵,如果取出第i朵花的个数为c>0,则贡 ...

  6. 《Spring Boot从零开始学(视频教学版)》快速入门Spring Boot应用开发

    #好书推荐##好书奇遇季#<Spring Boot从零开始学(视频教学版)>,目前为止较好的一本Spring Boot入门书.京东当当天猫都有发售.本书配套示例代码.课件与教学视频.定价7 ...

  7. 特别好用的题库(oj)

    tk.hustoj.com 每次做题时,我都会对"外部导入"这四个字感到迷惑: 这些题,究竟是从哪里"导入"的? 我们不为而知...... 直到后来...... ...

  8. C语言学习--常量指针与指针常量

    指针常量 #include<stdio.h> #include<string.h> //常量指针:是一个指针, 定义不用初始化, 能改变指向,但是指向的内容不能被修改 cons ...

  9. git 指令:丢弃本地所有未提交的更改

    git clean -df //丢弃所有 untracked 的文件 git reset --hard //将 tracked 的文件重置到前一个版本

  10. dp泄露

    DP泄露 选了三道与RSA的dp泄露有关的题,dp泄露算是比较有辨识度的题型. 目录 DP泄露 原理 ctfshow funnyrsa3 分析 解答 BUUCTF RSA2 分析 解答 [羊城杯 20 ...