介绍

Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。由于 Tkinter 是内置到 Python 的安装包中,所以只要安装好 Python 之后就能使用了,无需另外安装。Tkinter中的ttk对一些控件进行了美化,说是美化其实还是一样丑,所以不会去介绍相同的,只会介绍一些新增的控件。


控件种类

tkinter 控件种类

  1. Button 按钮
  2. Checkbutton 多选框按钮
  3. Entry 输入框
  4. Frame 框架
  5. Label 标签
  6. LabelFrame 标签框架
  7. Menu 菜单
  8. PanedWindow 分栏窗口
  9. Radiobutton 单选按钮
  10. Scale 滑块
  11. Scrollbar 滚动条
  12. Spinbox 输入框(指定数据范围,类型的输入框)
  13. Text 文本框
  14. Listbox 列表框
  15. Canvas 画布

tkinter.ttk 控件种类(除了上面那些,还有下面这些新增的控件)

  1. Combobox 下拉列表
  2. Notebook 标签页
  3. Progressbar 进度条
  4. Treeview 树状浏览窗口
  5. Separator 分割线
  6. Sizegrip 拉伸窗口大小的按钮

基本框架

import tkinter as tkroot = tk.Tk() # 主窗口对象# 注意,下面的x不是乘号是小写字母x
root.geometry('600x300+100+100')  # 设置窗口的大小,以及距离屏幕左上角x轴,y轴的距离。root.title('test app') # 设置窗口的标题###### 添加控件,设置控件属性,绑定回调函数root.mainloop()

添加控件的基本流程

  1. 新建控件,通常第一个是master参数,代表要把这个控件放在哪个控件上
  2. 在新建时可以往里面添加参数,设置一些控件属性,如:背景色,字体颜色,高,宽等,也可以在后期设置使用config方法修改/设置属性。
  3. 把新建的控件放好,控件的布局用pack, place, grid

实例


root = tk.Tk()  # 主窗口
root.geometry('600x400+200+200')
tk.Label(root,    # 第一个参数就是master,表明要把这个控件放在master里面。textvariable=mystr,width=20,             # 设置属性height=3,bg='#e33e31').pack() # pack布局该控件在主体中的位置。
root.mainloop()

控件与变量的关系

通过一些特定参数,某些组件(如文本输入组件)的当前设置可直接与应用程序的变量关联。这些参数包括 variable 、 textvariable 、 onvalue 、 offvalue 、 value。这种关联是双向的:只要这些变量因任何原因发生变化,其关联的部件就会更新以反映新的参数值。

现已经定义了很多有用的 Variable 子类: StringVar 、 IntVar 、DoubleVar 和 BooleanVar。

  • 调用 get() 方法可以读取变量的当前值;
  • 调用 set() 方法则可改变变量值。

实例

简单的说,像textvariable这样的参数,它和变量mystr是双向绑定的,所以对mystr设置了值,也相当于对textvariable设置了值,从mystr获得的值,也相当于从textvariable获得值。

import tkinter as tkroot = tk.Tk()
root.geometry('600x400')
mystr = tk.StringVar()
mystr.set('one')lbl = tk.Label(root,textvariable=mystr)
lbl.pack()def change():v = mystr.get()if v == 'one':mystr.set('two')elif v == 'two':mystr.set('one')btn = tk.Button(root,text='Change',command=change)
btn.pack()root.mainloop()

控件通用参数取值

控件中有很多参数功能都是一样的,为了化繁为简,把一些通用参数在这边列出来,后面就只提每个控件比较独特的参数。

颜色相关的

  • background/bg 背景颜色
  • foreground/fg 前景色,字体颜色
  • activebackground 激活状态的背景色(比如:点击时)
  • activeforeground 激活状态的前景色
  • highlightbackground 框架frame没有获得焦点时,边框的颜色
  • highlightcolor 框架frame获得焦点时,边框的颜色
  • highlightthickness 高亮边框的宽度,默认是0,所以当你设置了上面两项,而没有任何变化,说明边框宽度0,你看不到,设置一个整数,比如5,就可以看得到了。(使用tab键盘切换控件时,控件外围提示框的宽度,如下图黑色边框)
  • disabledforeground 控件state=disabled 时设置字体颜色
  • disabledbackground 控件state=disabled 时设置背景色

bd/borderwidth

边框的宽度.

height / width

控件的高、宽

takefocus

用户是否可以使用tab键移动到这个部件,True or False

anchor 锚定点

"n" 、"ne" 、"e" 、"se" 、"s" 、"sw" 、"w" 、"nw" 和 "center"

cursor 当光标进入控件时的样式

X_cursor
arrow
based_arrow_down
based_arrow_up
boat
bogosity
bottom_left_corner
bottom_right_corner
bottom_side
bottom_tee
box_spiral
center_ptr
circle
clock
coffee_mug
cross
cross_reverse
crosshair
diamond_cross
dot
dotbox
double_arrow
draft_large
draft_small
draped_box
exchange
fleur
gobbler
gumby
hand1
hand2
heart
icon
iron_cross
left_ptr
left_side
left_tee
leftbutton
ll_angle
lr_angle
man
middlebutton
mouse
none
pencil
pirate
plus
question_arrow
right_ptr
right_side
right_tee
rightbutton
rtl_logo
sailboat
sb_down_arrow
sb_h_double_arrow
sb_left_arrow
sb_right_arrow
sb_up_arrow
sb_v_double_arrow
shuttle
sizing
spider
spraycan
star
target
tcross
top_left_arrow
top_left_corner
top_right_corner
top_side
top_tee
trek
ul_angle
umbrella
ur_angle
watch
xterm

bitmap

内置已命名的位图有八个:'error'、 'gray25' 、'gray50' 、'hourglass'、 'info' 、'questhead' 、'question' 、'warning' 。若要指定位图的文件名,请给出完整路径,前面加一个 @,比如 "@/xxx/xxx.bit"

image

指定要在小部件中显示的图像,使用 img = tkinter.PhotoImage(file='xxx.gif'),加载图片

font

Tk 采用一串名称的格式表示字体,例如  font=("Microsoft Yahei",20,'italic','bold') 。正数的字体大小以点为单位,负数的大小以像素为单位。

justify对齐方式

"left" 、 "center" 、 "right" 和 "fill" 。

distance

屏幕距离可以用像素或绝对距离来指定。像素是数字,绝对距离是字符串,后面的字符表示单位:c 是厘米,i 是英寸,m 是毫米,p 则表示打印机的点数。例如,3.5 英寸可表示为 "3.5i"

relief

决定了组件的边框样式。 合法值包括:"raised"、 "sunken" 、"flat" 、"groove" 和 "ridge" 。

scrollcommand

xscrollcommandyscrollcommand 分别是给控件设置水平滚动条和垂直滚动条,使用scrollbar.set设置滚动条

wrap

一个单词还没有输入完就要换行了。如果设置成char没输入完的部分会另起一行,如果设置成word就会整个单词跳到下一行。(只能是以下值之一:"none" 、 "char" 、 "word"。)

wraplength

设置每行都最大长度

state

控件的状态: active, disabled, or normal

padx,pady

在控件里面设置代表添加内边距
在pack()、grid()里面设置代表添加外边距

compound

图片和文字的排布方式;none, bottom, top, left, right, center,如果选择top,图片就会在文字上方。

underline

下划线,underline=0代表在第一个字符下添加下划线。


控件的布局方式

place()

在一个坐标位置上放置控件
参数:
x
y
anchor (锚定点: n, ne, e, se, s, sw, w, nw, or center)

grid()

用行列的形式来布局控件
参数
row 第几行
rowspan 跨多少行
column 第几列
columnspan 跨多少列
ipadx - 水平内边距
ipady - 垂直内边距
padx - 水平外边距
pady - 垂直外边距
sticky(在单元格里面的位置:‘n’, ‘s’, ‘w’, ‘e’, )

pack()

参数

        anchor (锚定点: n, ne, e, se, s, sw, w, nw, or center)expand=bool - 是否随着父控件拉伸而拉伸fill=NONE or X (填充满水平方向)or Y (填充满垂直方向)or BOTH(填充满水平和垂直方向)ipadx - 水平内边距ipady - 垂直内边距padx - 水平外边距       pady - 垂直外边距side=TOP or BOTTOM or LEFT or RIGHT - 放置的位置


Toplevel

tkinter中的窗口是一个隐含的对象,最低一层实际上是Toplevel,构建窗口就是实例化一个Toplevel控件。

Toplevel可设置的

项目 说明
title(str) 设置窗口的标题
iconbitmap(ico_path) 设置窗口的图标,不知道为什么window可以设置,Mac不行,推荐ico x32的尺寸
geometry(str) 设置窗口的大小,以及距离左上角的x轴,y轴距离
maxsize(width=None, height=None) 设置窗口的最大尺寸
minsize(width=None, height=None) 设置窗口的最小尺寸
resizable(width=None, height=None) 设置窗口的可拉伸尺寸,当都等于0,表示禁止拉伸
attributes(‘-alpha’,1.0) 设置窗口的透明度,取值再0-1之间,还有其他可设置,但是window和Mac之间不通用,不说了。
configure(属性) 配置窗口的一些属性,下面表格中列出
mainloop() 主循环,执行则相当于启动窗口,必要

configure可设置的属性

属性 说明
bd/borderwidth 边框宽,默认是0,当你设置了边框宽,如果relief是flat,你是看不出变化的
menu 设置菜单Menu对象
relief 边框样式,可选的FLAT,SUNKEN,RAISED,GROOVE,RIDGE默认为FLAT
background/bg 背景色,'#1BA135'这样的RGB
colormap 设置需要是Colormap的实例,
container 设置需要是Container的实例
cursor 鼠标光标在其中的位置
height 高度
width 宽度
highlightbackground 要高亮的背景色
highlightcolor 要高亮的颜色
highlightthickness 高亮的宽度
padx 水平padding 内边距
pady 垂直padding 内边距
takefocus 指示用户可以使用tab键移动到这个部件

relief效果图

实例

import tkinter as tk
import sys
import osui_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
ico_path = os.path.join(ui_dir,'ico/logox32.ico')root = tk.Tk()# 注意,下面的x不是乘号是小写字母x
root.geometry('600x300+100+100')  # 设置窗口的大小,以及距离屏幕左上角x轴,y轴的距离。
root.iconbitmap(ico_path)
root.maxsize(width=600,height=300)
root.minsize(width=500,height=200)
root.configure(borderwidth=50,bg='#1BA135',relief='sunken')root.title('test app') # 设置窗口的标题root.mainloop()

Tkinter 1. 基本介绍相关推荐

  1. python中的图形界面设计_python图形化界面设计(tkinter)一全面介绍

    3.3.单选按钮:(Radiobutton)是为了响应故乡排斥的若干单选项的单击事件以触发运行自定义函数所设的,该控件排除具有共有属性外,还具有显示文本(text).返回变量(variable).返回 ...

  2. Python Tkinter 模块简要介绍

    [本文章已于 2022/9/26 重制]         这篇博客将简要地介绍 Python 的 Tkinter 模块,主要供没了解过 Tkinter 模块的人进行了解,让初学者也能进行桌面应用开发! ...

  3. 第12章 GUI编程与Tkinter相关组件介绍

    本章的知识点: 1.了解GUI程序开发: 2.学习Tkinter的主要组件 内容: 12.1 GUI程序开发简介 12.2 Tkinter与主要组件 创建和运行GUI程序,需要5步: 1.导入Tkin ...

  4. python编写一个软件-软件代做:利用Python编写一个行业专用的小计算器

    前言:本文讲述的是如何利用python编程制作一个适用于指定行业的计算器,方便计算结果,涵盖的知识点由Python编写GUI界面程序,利用爬虫采集实时的汇率数据,将Python文件打包成可以单独运行的 ...

  5. Py之GUI:Python下各种GUI(图形用户界面)简介、使用优缺点对比

    Py之GUI:Python下各种GUI(图形用户界面)简介.使用优缺点对比 目录 GUI Python下各种GUI简介.使用优缺点对比 Python下各种GUI更多官权威介绍 GUI 图形用户界面(G ...

  6. php图形界面框架,python GUI 图形化界面框架的选择

    根据网上资料的显示目前流行的开源python GUI有以下几个 (以下GUI框架适用于应用的GUI,如果采用WEB方式,UI可使用h5相关标签即可,也可以用框架.): PyQt 的介绍 : http: ...

  7. python数据写入表格生成图片_使用Python制作一个GUI界面,将随机生成的姓名存入到Excel文件中...

    前面内容,我们详细介绍了如何使用Python生成一定数量的随机姓名. 生成一些随机姓名 如何用Python生成若干个随机姓名?男女取名有方法,不能千篇一律 之前,也提到过,我们在一些项目中,需要若干个 ...

  8. python 抽奖库_用 python 写一个年会抽奖小程序

    使用 pyinstaller 打包工具常用参数指南 pyinstaller -F demo.py 参数 含义 -F 指定打包后只生成一个exe格式的文件 -D –onedir 创建一个目录,包含exe ...

  9. python界面设计-文件操作excel读写-发动机激励、悬置系统模态及振动计算

    一.参考 1.tkinter UI菜单 2.tkinter UI对话框打开.保存文件 3.tkinter 控件介绍 4.读写excel 5.执行文件打开:os.startfile('newfile.t ...

最新文章

  1. esxi所连交换机划vlan导致vm不能通讯
  2. vue学习笔记-01-前端的发展历史(从后端到前端,再到前后端分离,再到全栈)
  3. Struts 2读书笔记-----使用Struts 2的输入校验
  4. 【渝粤教育】国家开放大学2018年秋季 1174t水工钢筋混凝土结构(本) 参考试题
  5. KVM虚拟化实践-老男孩架构师课程教案笔记分享
  6. 瑞利-贝纳尔对流(Rayleigh–Bénard convection)
  7. Git:rebase 是什么
  8. RxJava Observer与Subscriber的关系
  9. 半加器设计(结构描述法)
  10. 提问|Feed流设计是否应该展示「评论」?
  11. 【技巧】EXCEL如何按行找出最大三个数并标记
  12. 主板是2011针服务器型号,华硕服务器主板 Z9PA-D8/C 双路2011针脚
  13. 企业应用集成之初学乍练
  14. 互联网乱弹之360的云存储
  15. (机器学习周志华 西瓜书 南瓜书)吃瓜教程 Task01
  16. 1N系列稳压二极管参数
  17. 组合数学拉丁方是什么
  18. 七夕时如何拯救躁动不安的心
  19. 看08春晚中石油的小品表演喽
  20. 锐动视频SDK在金融业务加密双录管理系统通用解决方案

热门文章

  1. 得到经纬度数据使用Plotly画世界地图(美赛心得)
  2. 根据时间戳生成当前月份第一天和最后一天
  3. 【计算机基础04】Excel知识
  4. 回忆詹姆斯·高斯林的Java时代
  5. 时间序列平稳性的判断和处理——R语言ndiffs()
  6. C# TextBox输入密码显示星号(*)
  7. 如何直观的理解机器学习PR曲线和ROC曲线?
  8. Java写字幕滚动,使用JavaScript实现连续滚动字幕效果的方法
  9. Python之Excel编辑-[小试牛刀]表格插入列
  10. 这届年轻人,怎么开始想着吃零食减肥了?