python(十七)——图形化界面Tkinter上

 

目录

 

Tkinter

Tkinter 组件

 可以为界面设置标题

为界面设置大小和位置

label控件

label标签可以显示文本

button控件

语法

创建一个简单按钮:

给按钮添加功能

Entry输入控件

语法

点击按钮输出输入框中的内容小程序

Text文本控件 

带滚动条的文本显示


Tkinter

Python支持多种图形界面的第三方库,包括:

  • Tk
  • wxWidgets
  • Qt
  • GTK

但是Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用。本章简单介绍如何使用Tkinter进行GUI编程。

Tkinter概念:

我们编写的Python代码会调用内置的Tkinter,Tkinter封装了访问Tk的接口;

Tk是一个图形库,支持多个操作系统,使用Tcl语言开发;

Tk会调用操作系统提供的本地GUI接口,完成最终的GUI。

所以,我们的代码只需要调用Tkinter提供的接口就可以了。

python(十七)——图形化界面Tkinter上_第1张图片

Tkinter 组件

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

目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:

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

简单示例:创建一个窗口

import tkinter

#创建主窗口
win = tkinter.Tk()

win.mainloop()

python(十七)——图形化界面Tkinter上_第2张图片

 可以为界面设置标题

win.title("主界面")

python(十七)——图形化界面Tkinter上_第3张图片

为界面设置大小和位置

设置大小为多少x多少,乘号是小写x。位置是用+号来表示

#设置大小和位置
win.geometry("300x300+200+0")

python(十七)——图形化界面Tkinter上_第4张图片

label控件

label标签可以显示文本

Python Tkinter 文本框用来让用户输入一行文本字符串。

  • 你如果需要输入多行文本,可以使用 Text 组件。
  • 你如果需要显示一行或多行文本且不允许用户修改,你可以使用 Label 组件。
序号 可选项 & 描述
1

bg

输入框背景颜色

2

bd

边框的大小,默认为 2 个像素

3

cursor

光标的形状设定,如arrow, circle, cross, plus 等

4

font

文本字体

5

exportselection

默认情况下,你如果在输入框中选中文本,默认会复制到粘贴板,如果要忽略这个功能刻工艺设置 exportselection=0。

6

fg

文字颜色。值为颜色或为颜色代码,如:'red','#ff0000'

7

highlightcolor

文本框高亮边框颜色,当文本框获取焦点时显示

8

justify

显示多行文本的时候,设置不同行之间的对齐方式,可选项包括LEFT, RIGHT, CENTER

9

relief

边框样式,设置控件3D效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT。

10

selectbackground

选中文字的背景颜色

11

selectborderwidth

选中文字的背景边框宽度

12

selectforeground

选中文字的颜色

13

show

指定文本框内容显示为字符,值随意,满足字符即可。如密码可以将值设为 show="*"

14

state

默认为 state=NORMAL, 文框状态,分为只读和可写,值为:normal/disabled

15

textvariable

文本框的值,是一个StringVar()对象

16

width

文本框宽度

17

xscrollcommand

设置水平方向滚动条,一般在用户输入的文本框内容宽度大于文本框显示的宽度时使用。

#win父窗体
#text:显示的文本内容
#bg :背景色  fg :字体色
label = tkinter.Label(win,text="good morning,boynextdoor",bg = "blue",fg = "red")
#挂载,显示出来label
label.pack()

python(十七)——图形化界面Tkinter上_第5张图片

#font :字体 大小
label = tkinter.Label(win,text="good morning,boynextdoor",bg = "blue",fg = "red",font = ("宋体",20))

指定text中文本多宽,换行wraplength 
label = tkinter.Label(win,text="good morning,boynextdoor",bg = "blue",fg = "red",font = ("宋体",20),wraplength = 50)

python(十七)——图形化界面Tkinter上_第6张图片

 

button控件

Tkinter 按钮组件用于在 Python 应用程序中添加按钮,按钮上可以放上文本或图像,按钮可用于监听用户行为,能够与一个 Python 函数关联,当按钮被按下时,自动调用该函数。

语法

语法格式如下:

w = Button ( master, option=value, ... )
  • master: 按钮的父容器。
  • options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。

创建一个简单按钮:

import tkinter

#创建主窗口
win = tkinter.Tk()
win.title("主界面")

button = tkinter.Button(win,text="按钮")
button.pack()

win.mainloop()

python(十七)——图形化界面Tkinter上_第7张图片

给按钮添加功能

使用command来将def定义的方法添加在按钮中,每按一次按钮就使用一次方法

def fun():
    print("hello world")
button = tkinter.Button(win,text="按钮",command=fun)
button.pack()

python(十七)——图形化界面Tkinter上_第8张图片

按了三次按钮 

设置一个退出方法按钮,点击按钮就会退出这个界面

button2 = tkinter.Button(win,text="退出",command=win.quit)

python(十七)——图形化界面Tkinter上_第9张图片

Entry输入控件

用于显示简单的文本

语法

语法格式如下:

w = Entry( master, option, ... )
  • master: 按钮的父容器。
  • options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。

简单的entry输入

import tkinter

#创建主窗口
win = tkinter.Tk()
win.title("主界面")
entry = tkinter.Entry(win)
entry.pack()

win.mainloop()

python(十七)——图形化界面Tkinter上_第10张图片

 show 密文显示

entry = tkinter.Entry(win,show="*")

python(十七)——图形化界面Tkinter上_第11张图片

给输入框设置变量

使用variable来绑定变量

#创建主窗口
win = tkinter.Tk()
win.title("主界面")
#绑定变量
e = tkinter.Variable()
entry = tkinter.Entry(win,textvariable=e)
entry.pack()
#e就代表输入框的这个对象
#设置值
e.set("this is a good day")

win.mainloop()

获取输入框内的值 可以使用get

取值,可以使用e.get(),也可以使用entry.get()

 

点击按钮输出输入框中的内容小程序

先设置一个输入框和一个按钮。然后再设置一个变量去获取输入框内的值,然后再定义一个方法,在方法内打印变量。最后使用command去让方法赋给按钮

#创建主窗口
win = tkinter.Tk()
win.title("主界面")
#定义展示方法
def show():
    print(e.get())
# 绑定变量
e = tkinter.Variable()
#设置输入框
entry = tkinter.Entry(win,textvariable = e)
#设置按钮
button = tkinter.Button(win,text="按钮",command = show)
entry.pack()
button.pack()
win.mainloop()

python(十七)——图形化界面Tkinter上_第12张图片

Text文本控件 

Text 文本控件;用于显示多行文本

 

一个简单的文本显示

#文本控件
text = tkinter.Text(win,width=30,height=15)
#str字符串内容
str="askfhafojfaijnalfaipjfpaosTkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。"
#将字符串内容放入文本中
text.insert(tkinter.INSERT,str)
text.pack()

python(十七)——图形化界面Tkinter上_第13张图片

带滚动条的文本显示

scrollbar滚动条显示,在使用滚动条时,需要将滚动条放到窗体的右侧,并且与需要滚动的内容相管理

Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。.
#创建主窗口
win = tkinter.Tk()
win.title("主界面")

#文本控件
text = tkinter.Text(win,width=30,height=4)
#创建滚动条
scroll = tkinter.Scrollbar()
#side:将滚动条放到主窗体右侧  fill:将窗体Y侧填充满
scroll.pack(side=tkinter.RIGHT,fill=tkinter.Y)
#文本内容
str="askfhafojfaijnalfaipjfpaosTkinter: 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 字节码。"
#将字符串内容添加到文本中
text.insert(tkinter.INSERT,str)
#side:将文本放到主窗体左侧 fill:将窗体Y侧填充满
text.pack(side=tkinter.LEFT,fill=tkinter.Y)
#将滚动条和文本text相关联
scroll.config(command = text.yview)
text.config(yscrollcommand = scroll.set)

win.mainloop()

python(十七)——图形化界面Tkinter上_第14张图片

python(十七)——图形化界面Tkinter上_第15张图片

python(十七)——图形化界面Tkinter上_第16张图片

 

 

 

一起学习,一起进步 -.- ,如有错误,可以发评论 

你可能感兴趣的:(python)