Python GUI界面tkinter和ttkbootstrap

  • 一、tkinter库
  • 1.tkinter介绍
  • 2.tkinter常用控件和方法:
  • 3.tkinter创建根窗体
  • 4.创建按钮Button
  • 5.创建单行文本输入框
  • 6.创建多行文本输入框
  • 7.单选按钮 Radiobutton
  • 二、ttkbootstrap库
  • 1.ttkbootstrap介绍
  • 2.安装方法
  • 3.ttkbootstrap消息框
  • 4.ttkbootstrap进度条


一、tkinter库

1.tkinter介绍

tkinter是Python自带的GUI库,实质上是一种流行的面向对象的GUI工具包 TK 的Python编程接口,提供了快速便利地创建GUI应用程序的方法
tkinter安装:python内置库不需要安装可以直接使用

2.tkinter常用控件和方法:

窗口常用控件:

控件类型

控件名称

控件作用

Button

按钮

点击按钮时触发/执行一些事件(函数)

Canvas

画布

提供绘制图,比如直线、矩形、多边形等

Checkbutton

复选框

多项选择按钮,用于在程序中提供多项选择框

Entry

文本框输入框

用于接收单行文本输入

Frame

框架(容器)控件

定义一个窗体(根窗口也是一个窗体),用于承载其他控件,即作为其他控件的容器

Lable

标签控件

用于显示单行文本或者图片

LableFrame

容器控件

一个简单的容器控件,常用于复杂的窗口布局。

Listbox

列表框控件

以列表的形式显示文本

Menu

菜单控件

菜单组件(下拉菜单和弹出菜单)

Menubutton

菜单按钮控件

用于显示菜单项

Message

信息控件

用于显示多行不可编辑的文本,与 Label控件类似,增加了自动分行的功能

messageBox

消息框控件

定义与用户交互的消息对话框

OptionMenu

选项菜单

下拉菜单

PanedWindow

窗口布局管理组件

为组件提供一个框架,允许用户自己划分窗口空间

Radiobutton

单选框

单项选择按钮,只允许从多个选项中选择一项

Scale

进度条控件

定义一个线性“滑块”用来控制范围,可以设定起始值和结束值,并显示当前位置的精确值

Spinbox

高级输入框

Entry 控件的升级版,可以通过该组件的上、下箭头选择不同的值

Scrollbar

滚动条

默认垂直方向,鼠标拖动改变数值,可以和 Text、Listbox、Canvas等控件配合使用

Text

多行文本框

接收或输出多行文本内容

Toplevel

子窗口

在创建一个独立于主窗口之外的子窗口,位于主窗口的上一层,可作为其他控件的容器

窗口常用方法:

函数

说明

window.title(“my title”)

接受一个字符串参数,为窗口起一个标题

window.resizable()

是否允许用户拉伸主窗口大小,默认为可更改,当设置为 resizable(0,0)或者resizable(False,False)时不可更改

window.geometry()

设定主窗口的大小以及位置,当参数值为 None 时表示获取窗口的大小和位置信息。

window.quit()

关闭当前窗口

window.update()

刷新当前窗口

window.mainloop()

设置窗口主循环,使窗口循环显示(一直显示,指导窗口被关闭)

window.iconbitmap()

设置窗口左上角的图标(图标是.ico文件类型)

window.config(background =“red”)

设置窗口的背景色为红色,也可以接受 16 进制的颜色值

window.minsize(50,50)

设置窗口被允许调整的最小范围,即宽和高各50

window.maxsize(400,400)

设置窗口被允许调整的最大范围,即宽和高各400

window.attributes(“-alpha”,0.5)

用来设置窗口的一些属性,比如透明度(-alpha)、是否置顶(-topmost)即将主屏置于其他图标之上、是否全屏(-fullscreen)全屏显示等

window.state(“normal”)

用来设置窗口的显示状态,参数值 normal(正常显示),icon(最小化),zoomed(最大化)

window.withdraw()

用来隐藏主窗口,但不会销毁窗口。

window.iconify()

设置窗口最小化

window.deiconify()

将窗口从隐藏状态还原

window.winfo_screenwidth() window.winfo_screenheight()

获取电脑屏幕的分辨率(尺寸)

window.winfo_width() window.winfo_height()

获取窗口的大小,同样也适用于其他控件,但是使用前需要使用 window.update() 刷新屏幕,否则返回值为1

window.protocol(“协议名”,回调函数)

启用协议处理机制,常用协议有 WN_DELETE_WINDOW,当用户点击关闭窗口时,窗口不会关闭,而是触发回调函数。

3.tkinter创建根窗体

import tkinter

# 实例化Tk()
root_window = tkinter.Tk()
# 设置窗口title
root_window.title('TITLE')
# 设置窗口大小:宽x高,注,此处不能为 "*",必须使用 "x"
root_window.geometry('450x300')
# 更改左上角窗口的的icon图标,加载logo标
root_window.iconbitmap('D:/img/favicon.ico')
# 设置主窗口的背景颜色,颜色值可以是英文单词,或者颜色值的16进制数,除此之外还可以使用Tk内置的颜色常量
root_window["background"] = "#FFFFFF"


#进入主循环,显示主窗口
root_window.mainloop()

4.创建按钮Button

# 添加按钮,以及按钮的文本,并通过command 参数设置关闭窗口的功能
button = tkinter.Button(root, text="关闭", command=root.quit)
# 将按钮放置在主窗口内
button.place(x=200, y=260, width=200, height=30)

运行结果:

Button 控件的常用属性如下:

属性

说明

anchor

控制文本所在的位置,默认为中心位置(CENTER)

activebackground

当鼠标放在按钮上时候,按妞的背景颜色

activeforeground

当鼠标放在按钮上时候,按钮的前景色

bd

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

bg

按钮的背景色

command

用来执行按钮关联的回调函数。当按钮被点击时,执行该函数

fg

按钮的前景色

font

按钮文本的字体样样式

height

按钮的高度

highlightcolor

按钮控件高亮处要显示的颜色

image

按钮上要显示的图片

justify

按钮显示多行文本时,用来指定文本的对齐方式,参数值有 LEFT/RIGHT/CENTER

padx/pady

padx 指定 x 轴(水平方向)的间距大小,pady 则表示 y轴(垂直方向)的间距大小

ipadx/ipady

ipadx 指标签文字与标签容器之间的横向距离;ipady 则表示标签文字与标签容器之间的纵向距离

state

设置按钮的可用状态,可选参数有NORMAL/ACTIVE/DISABLED,默认为 NORMAL

text

按钮控件要显示的文本

5.创建单行文本输入框

# 新建账号文本框标签
entry = tkinter.Entry(root)

# 布局
entry.place(x=60, y=40, width=200, height=30)

# 获取单行文本框的值
entry.get()

# 插入默认文本
user_entry.insert(0, '请输入账号')

# delete清空输入框 第0个字符开始;END最后一个字符结束
text.delete("1.0", "end")

Entry 控件的常用属性如下:

6.创建多行文本输入框

# 创建一个文本控件
# width 一行可见的字符数;height 显示的行数
text = Text(root, width=50, height=30, undo=True,autoseparators=False)

# 布局
text.place(x=10, y=10, width=200, height=30)

# 获取多行文本框的值
entry.get()

# 插入文本,INSERT 光标处插入;END 末尾处插入
text.insert(INSERT, '请输入文本')

# delete清空输入框 第1行0个字符开始;END 尾行最后一个字符结束
text.delete("1.0", "end")
win.mainloop()

7.单选按钮 Radiobutton

def mess():
  print(rad_value.get())
  
# IntVar() 用于处理整数类型的变量
rad_value = ttk.IntVar()

# 根据单选按钮的 value 值来选择相应默认的选项
rad_value.set(0)

# 使用 variable 参数来关联 IntVar() 的变量 v
rad = ttk.Radiobutton(root, text="A", variable=rad_value, value=1, command=mess)
rad.place(x=200, y=70, width=100, height=50)

rad = ttk.Radiobutton(root, text="B", variable=rad_value, value=2, command=mess)
rad.place(x=200, y=120, width=100, height=50)

rad = ttk.Radiobutton(root, text="C", variable=rad_value, value=3, command=mess)
rad.place(x=200, y=170, width=100, height=50)

rad = ttk.Radiobutton(root, text="D", variable=rad_value, value=4, command=mess)
rad.place(x=200, y=230, width=100, height=50)

8.多选框 Checkbutton
9.文件选择对话框 tkinter.filedailog
10.子窗口Toplevel
11.菜单控件 Menu
12.下拉菜单 Toplevel

二、ttkbootstrap库

1.ttkbootstrap介绍

ttkbootstrap 是python的三方GUI库

2.安装方法

pip install ttkbootstrap

3.ttkbootstrap消息框

import ttkbootstrap as ttk
from ttkbootstrap.dialogs.dialogs import Messagebox
# from ttkbootstrap.constants import *

def mess():
    print('点击弹出消息')
    msg = Messagebox.okcancel(title="提示", message='是否要退出')
    print(msg)

4.ttkbootstrap进度条

import ttkbootstrap as ttk

gress = ttk.Progressbar(root,  length=200, mode='determinate')
gress.place(x=10, y=350, width=500, height=50)
gress['maximum'] = 100
gress['value'] = 50