美文网首页
Tkinter 1. 基本介绍

Tkinter 1. 基本介绍

作者: JunChen | 来源:发表于2022-09-20 11:34 被阅读0次

介绍

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 tk

root = 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 tk


root = 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 os


ui_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. 基本介绍

      本文链接:https://www.haomeiwen.com/subject/oqtvortx.html