Python
提供了多个图形开发界面的库,几个经常使用Python GUI
库以下:Tkinter
:Tkinter
模块(Tk 接口)是Python
的标准 Tk GUI 工具包的接口.Tk
和Tkinter
能够在大多数的Unix
平台下使用, 一样能够应用在Windows
和Macintosh
系统里。Tk8.0
的后续版本能够实现本地窗口风格,并良好地运行在绝大多数平台中。wxPython
:wxPython
是一款开源软件,是Python
语言的一套优秀的GUI
图形库,容许Python
程序员很方便的建立完整的、功能健全的GUI
用户界面。Jython
:Jython
程序能够和Java
无缝集成。除了一些标准模块,Jython
使用Java
的模块。Jython
几乎拥有标准的Python
中不依赖于C
语言的所有模块。好比,Jython
的用户界面将使用 Swing
,AWT
或者SWT
。Jython
能够被动态或静态地编译成Java
字节码Tkinter
介绍Tkinter
是Python
的标准GUI
库。Python
使用 Tkinter
能够快速的建立GUI
应用程序。Tkinter
是内置到python
的安装包中、只要安装好Python
以后就能import Tkinter
库、并且IDLE
也是用Tkinter
编写而成、对于简单的图形界面Tkinter
仍是能应付自如须要注意: Python3.x
版本使用的库名为 tkinter
,即首写字母T
为小写前端
import tkinter
复制代码
tkinter
模块master
,即这个控件属于哪个GM(geometry manager)
有一个控件产生了iOS
中每个APP
都有一个主窗口window
, 该window
就是全部视图嘴地城最基础的视图View
Python
中童谣也会有一个主窗口, 下面看一下tkinter
生成主窗口的方法# 主窗口
import tkinter
# 建立主窗口
window = tkinter.Tk()
# 设置标题
window.title('Titanjun')
# 设置窗口大小
window.geometry('400x400')
# 进入消息循环
window.mainloop()
复制代码
效果以下python
主窗口除了上述方法以外还有如下方法程序员
# 框体大小的可调性, 分别表示x, y方向的可变性
window.resizable(0, 0)
# 退出
window.quit()
# 刷新页面
window.update()
复制代码
Tkinter
组件Tkinter
的提供各类控件,如按钮,标签和文本框,一个GUI
应用程序中使用, 这些控件一般被称为控件或者部件控件 | 描述 |
---|---|
Label |
标签控件, 能够显示文本和位图 |
Button |
按钮控件, 在程序中显示按钮 |
Entry |
输入控件;用于显示简单的文本内容 |
Checkbutton |
多选框控件;用于在程序中提供多项选择框 |
Frame |
框架控件;在屏幕上显示一个矩形区域,多用来做为容器 |
Canvas |
画布控件;显示图形元素如线条或文本 |
Listbox |
列表框控件;在Listbox 窗口小部件是用来显示一个字符串列表给用户 |
Menubutton |
菜单按钮控件,因为显示菜单项。 |
Menu |
菜单控件;显示菜单栏,下拉菜单和弹出菜单 |
Message |
消息控件;用来显示多行文本,与label 比较相似 |
Radiobutton |
单选按钮控件;显示一个单选的按钮状态 |
Scale |
范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
Scrollbar |
滚动条控件,当内容超过可视化区域时使用,如列表框 |
Text |
文本控件;用于显示多行文本 |
Spinbox |
输入控件;与Entry 相似,可是能够指定输入范围值 |
PanedWindow |
一个窗口布局管理的插件,能够包含一个或者多个子控件 |
LabelFrame |
一个简单的容器控件, 经常使用与复杂的窗口布局 |
tkMessageBox |
用于显示你应用程序的消息框 |
若是以前作过H5前端开发或者iOS等页面相关开发工做的, 应该能到, 其实这些组件和其余开发语言提供的组件功能类似, 属性也相似, 下面咱们先看一下一些通用的属性介绍框架
属性值 | 属性描述 |
---|---|
bg |
控件的背景颜色 |
fg |
组件中的字体颜色 |
font |
设置文本的字体样式和字号 |
height |
设置控件高度 |
width |
设置控件宽度 |
bd |
设置控件边框的大小, 默认2个像素 |
relief |
设置边框样式, 有falt, sunken, raised, groove, ridge, 默认flat |
text |
设置文本内容 |
anchor |
瞄点, 控制文本的位置, 默认居中(可选: n北, e东, s南, w西, center居中, ne se, sw, nw) |
justify |
显示多行文本的时候,设置不一样行之间的对齐方式(left, right, center) |
wraplength |
根据宽度限制控件每行显示的字符的数量 |
underline |
下划线, 默认没有; 取值就是带下划线的字符串索引,为 0 时,第一个字符带下划线 |
padx |
在x轴方向上的内边距(padding),是指控件的内容与控件边缘的距离 |
pady |
在y轴方向上的内边距(padding) |
Label
控件Label
控件用以显示文字和图片.Label
一般被用来展现信息, 而非与用户交互Label
也能够绑定点击等事件, 只是一般不这么用label = tkinter.Label(window,
text="我是一只小鸭子",
bg='#999999',
fg='white',
font=('黑体', 13),
justify='center',
height=5,
width=30,
anchor='n',
# wraplength=30
underline=3,
bd=3,
relief='flat'
)
#显示出来
label.pack()
复制代码
显示效果ide
部分属性介绍函数
anchor
: 文本在空间中的显示位置(按上北下南, 左西右东规则), 可选值有(n北 e东 s南 w西 center居中 ne西北 se东南 sw西南 nw东北)方向image
: 显示的图片Button
控件Button
控件是一个标准的Tkinter
小部件,用于各类按钮, 若是用鼠标点击按钮,可能会开始一些操做Button
能够显示文本和图片# 设置标题
window.title('Titanjun')
# 设置窗口大小
window.geometry('400x400')
# 建立按钮
button1 = tkinter.Button(window,
text='按钮1',
bg='orange',
height=3,
width=20,
bd=3,
relief='sunken',
activebackground='orange',
activeforeground='white',
command=action1
)
button1.pack()
button2 = tkinter.Button(window, text='Titanjun', height=3, command=window.quit())
button2.pack()
# 进入消息循环
window.mainloop()
复制代码
效果样式工具
部分属性介绍oop
activebackground
: 当鼠标放上去时,按钮的背景色activeforeground
: 当鼠标放上去时,按钮的文本颜色highlightcolor
: 要高亮的颜色image
: 按钮上要显示的图片state
: 设置按钮组件状态,可选的有(normal(默认), active, disabled)command
: 按钮的绑定函数方法, 接受一个函数名,注意函数名不要加引号Entry
输入输入控件, 用于显示简单的文本内容, 和iOS
中的UITextField
同样, 示例以下布局
vari = tkinter.Variable()
entry = tkinter.Entry(window, textvariable=vari)
entry.pack()
# 设置值
vari.set('very good')
# 取值
print(vari.get())
print(entry.get())
# 只读输入框
vari2 = tkinter.Variable()
entry2 = tkinter.Entry(window, textvariable=vari2, state='disabled')
entry2.pack()
# 设置值
vari2.set('very bad')
print(vari2.get())
# 密码输入框, 不管输入什么都显示密文
vari3 = tkinter.Variable()
entry3 = tkinter.Entry(window, textvariable=vari3, show='@', bg='red', fg='white')
entry3.pack()
复制代码
效果样式字体
监听输入框内文字的改变
validate
: 设置输入框的监听状态
focus
:当Entry
组件得到或失去焦点的时候验证focusin
: 当Entry
组件得到焦点的时候验证focusout
: 当Entry
组件失去焦点的时候验证key
:当输入框被编辑的时候验证all
: 当出现上边任何一种状况的时候验证validatecommand
: 接受一个判断输入框内的文字是否符合要求的函数, 该函数只能返回 True 或 False 表示验证的结果invalidcommand
: 指定的函数只有在validatecommand
的返回值为False
的时候才被调用# 主窗口
import tkinter
# 验证输入的文字
def varileText():
text = entry4.get()
if text == '1':
print('对喽')
return True
print('错漏')
return False
#
def testInvaild():
print('invaildCommanf被调用')
return True
# 建立主窗口
window = tkinter.Tk()
# 设置标题
window.title('Titanjun')
# 设置窗口大小
window.geometry('400x400')
# 验证输入的内容是否符合要求
vari4 = tkinter.Variable()
entry4 = tkinter.Entry(window, textvariable=vari4, validate='key', validatecommand=varileText, invalidcommand=testInvaild)
entry4.pack()
# 进入消息循环
window.mainloop()
复制代码
Text
多行文本Text
文本组件用于显示和处理多行文本。Tkinter
的全部组件中,Text
组件显得异常强大和灵活,它适用于处理多任务Text
组件的时候里面是没有内容的。为了给其插入内容,可使用insert()
以及INSERT
或END
索引号text = Text(window, bg='yellow', width=40, height=10)
#INSERT索引表示在光标处插入
text.insert(INSERT,'I Love')
#END索引号表示在最后插入
text.insert(END,' you')
text.pack()
def show():
print('好了, 你赢了')
# text还能够插入按钮 图片等
b1 = Button(text, text='点我点我', command=show)
# 在text建立组件的命令
text.window_create(INSERT, window=b1)
复制代码
Indexes
(索引)是用来指向Text
组件中文本的位置,跟python
的序列索引同样,Text
的组件索引也是对应实际字符之间的位置from tkinter import *
root = Tk()
text1=Text(root,width=30,height=3)
text1.insert(INSERT,'index的练习')
#1.2到1.5的范围之间
print(text1.get(1.2,1.5))
复制代码
Tags
一般用于改变Text组件中内容的样式和功能,你能够修改文本的字体,尺寸和颜色,另外Tags
还容许你将文本、嵌入的组件和图片与键盘相关联,除了user-defined tags
(用户自定义的Tags
)
text.insert(INSERT, '自定义标签的名字')
#第一个参数为自定义标签的名字
#第二个参数为设置的起始位置,第三个参数为结束位置
#第四个参数为另外一个位置
text.tag_add('tag1', '1.7', '1.12', '1.14')
#用tag_config函数来设置标签的属性(这里不要用简写, 不然报错)
text.tag_config('tag1', font=17, background='blue', foreground='red')
# text.tag_config('tag1', bg='yellow', fg='red')
#新的tag会覆盖旧的tag
复制代码
text = Text(window, bg='yellow', width=100, height=10)
# 添加右侧滚动条
scroll = Scrollbar()
# side放到窗体的那一侧 fill填充
scroll.pack(side=RIGHT, fill=Y)
text.pack(side=RIGHT, fill=Y)
# 二者关联
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)
str = '''致橡树--舒婷 ..........此处省略N个字........... '''
text.insert(INSERT, str)
复制代码
效果样式
Checkbutton
能够表示两种状态:On
和Off
,能够设置回调函数,每当点击此按钮时回调函数被调用def update():
message = ''
if tag1.get() == True:
message += 'titan \n'
if tag2.get() == True:
message += 'jun \n'
if tag3.get() == True:
message += 'coder \n'
#清除text中的全部内容
text.delete(0.0, END)
# 插入新的文本内容
text.insert(INSERT, message)
# 要绑定的变量
tag1 = BooleanVar()
check1 = Checkbutton(window, text = 'Titan', variable = tag1, command = update)
check1.pack()
tag2 = BooleanVar()
check2 = Checkbutton(window, text = 'Juned', variable = tag2, command = update)
check2.pack()
tag3 = BooleanVar()
check3 = Checkbutton(window, text = 'Coder', variable = tag3, command = update)
check3.pack()
text = Text(window, bg = 'orange', width = 50, height = 5)
text.pack()
复制代码
效果样式
Radiobutton
为单选按钮,即在同一组内只能有一个按钮被选中,每当选中组内的一个按钮时,其它的按钮自动改成非选中态,与其余控件不一样的是:它有组的概念
def selectorAction():
print(tag.get())
# 一组单选框要绑定同一个变量
tag = IntVar()
radio1 = Radiobutton(window, text = 'one', value = 23, variable = tag, command = selectorAction)
radio1.pack()
radio2 = Radiobutton(window, text = 'two', value = 32, variable = tag, command = selectorAction)
radio2.pack()
radio3 = Radiobutton(window, text = 'ten', value = 10, variable = tag, command = selectorAction)
radio3.pack()
复制代码
效果样式
未完待续, 后期会继续更新其余控件的相关介绍..........