前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >图形化界面的开发(GUI)_Tkinter库的使用-4(Entry+Spinbox+Listbox+Combobox)

图形化界面的开发(GUI)_Tkinter库的使用-4(Entry+Spinbox+Listbox+Combobox)

原创
作者头像
laity
修改2025-02-28 09:51:35
修改2025-02-28 09:51:35
10900
代码可运行
举报
文章被收录于专栏:Tkinter库的使用Tkinter库的使用
运行总次数:0
代码可运行

@TOC

前言

本篇文章主要python第三方库Tkinter库的使用,包括输入框(Entry)控件,Spinbox控件,Listbox(列表框)控件和Combobox(复合框)控件它们的常用属性和方法以及具体的示例和相应的效果图。

导航

pillow库的使用篇

图片脚本篇

Tkiner库的使用篇

Entry控件

输入框(Entry)控件可以向用户提供单行文本框,用来接收用书输入的值,从而实现GUI程序与用户的交互。它只能接收用户的一行文字,对于多行文字,要使用文本(Text)控件。

常用属性

输入框(Text)控件除了具有共有属性外,也有一些自身的特殊属性,如下:

属性名称

说明

exportselection

默认情况下,写在输入框内的文本将被自动复制到剪贴板。如果要忽略这个功能,可以设置为 exportselection=0

selectbackground

选中文字时的背景颜色

selectforeground

选中文字时的前景色

show

指定文本框内容以何种样式的字符显示,比如密码可以将值设为 show="*"

textvariable

输入框内值,也称动态字符串,使用 StringVar() 对象来设置,而 text 为静态字符串对象

xscrollcommand

设置输入框内容滚动条,需要和Scrollbar 组件相关联

它并没有直接的默认文本的属性,不过可以使用insert方法来达到这样的效果。

下面是Entry控件常用的一些方法:

方法

描述

get()

获取控件内的文本

index(index)

用于将光标放在指定索引处写入的字符的左边

insert(index,s)

用于在放置在指定索引处的字符之前插入指定的字符串

delete(first,last=none)

用于删除控件内的指定字符

select_clear()

如果已经做了一些选择,它将清除选择

select_present()

如果条目中的某些文本被选中,它返回真,否则返回假

xview(index)

它用于将条目控件与水平滚动条联系起来

xview_scroll(number,what)

它用于使条目可以水平滚动

除此之外,它还提供了对输入内容的验证功能的参数:

参数

描述

validate

指定验证方式,字符串参数,参数值有 focus、focusin、focusout、key、all、none。 对应着什么时候验证,比如focus是当Entry获得或失去焦点的时候验证,key是当输入框被编辑的时候验证

validatecommand

指定用户自定义的验证函数,该函数只能返回 True 或者 Fasle

invalidcommand

当 validatecommand 指定的验证函数返回 False 时,可以使用该参数值再指定一个验证函数。

示例

以下是加了一些参数的各种示例

代码语言:python
代码运行次数:0
复制
import tkinter as tk # 导入图形界面库tkinter
from tkinter import messagebox # 导入消息框组件
# 创建窗口
window = tk.Tk()
# 设置窗口标题
window.title("Entry")
# 设置窗口大小
window.geometry("300x200")
# 定义一个函数,用于验证数字输入
def check_int():
    if not entry4.get().isdigit():
        messagebox.showerror("错误", "请输入数字!")
        entry4.delete(0, "end")
        return True
    try:
        int(entry4.get())
        return True
    except ValueError:
        messagebox.showerror("错误", "请输入数字!")
        entry4.delete(0, "end")
        return False
# 创建一个Scrollbar组件,用于滚动条
scrollbar = tk.Scrollbar(window,orient="horizontal")
# 将Scrollbar组件放置在窗口中
scrollbar.grid(row=2,column=0,sticky="we")
# 示例1:创建Entry组件并设置初始值
label1 = tk.Label(window,text="默认文本效果:",font=("../font/jian.ttf",16))
label1.grid(row=0,column=0)
# 创建Entry组件
entry = tk.Entry(window, width=20,fg="skyblue")
# 设置Entry组件的初始值
entry.insert(0, "请输入内容")
# 将Entry组件放置在窗口中
entry.grid(row=0, column=1)
# 示例2:密码框
label2 = tk.Label(window,text="密码效果:",font=("../font/jian.ttf",16))
label2.grid(row=1,column=0)
# 创建密码框
entry2 = tk.Entry(window, width=20, show="*",bg="antiquewhite")
# 设置密码框的初始值
entry2.insert(0, "请输入密码")
# 将密码框放置在窗口中
entry2.grid(row=1, column=1)
# 示例3:水平滚动条:
label3 = tk.Label(window,text="水平滚动条:",font=("../font/jian.ttf",16))
label3.grid(row=2,column=0)
# 创建水平滚动条
entry3 = tk.Entry(window, width=20,xscrollcommand=scrollbar.set)
scrollbar.config(command=entry3.xview)
entry3.insert(0, "请输入内容,内容过长时会出现滚动条")
entry3.grid(row=2, column=1)
# 示例4:验证数字输入
label4 = tk.Label(window,text="验证数字输入:",font=("../font/jian.ttf",16))
label4.grid(row=3,column=0)
# 创建验证数字输入的Entry组件
entry4 = tk.Entry(window, width=20, validate="key", validatecommand=check_int)
entry4.grid(row=3, column=1)
# 运行窗口
window.mainloop()

PS:其中的font字体是我下载到本地的地址,地址可适当修改,否则会报错。

效果

Spinbox控件

Spinbox 是 Entry 控件的升级版,该控件不仅允许用户直接输入内容,还支持用户使用微调选择器(即上下按钮调节器)来输入内容。在一般情况下,Spinbox 控件用于在固定的范围内选取一个值的时候使用。

常用属性

属性

说明

from_

该参数和to一起使用,一起用于指定数值的范围

to

和from_参数一起使用,指定数值的结束数值

increment

指定每次递增或递减的精度

wrap

默认为false,,当输入框中的值是第一个(最后一个)的时候,再点击向上(向下)调节箭头,内容不会改变,为true时则相反。

values

也可以通过这个参数传入值来限定输入输入内容

示例

代码语言:python
代码运行次数:0
复制
import tkinter as tk
# 实例化Tk()
window = tk.Tk()
# 设置窗口大小和标题
window.geometry("300x200")
window.title("Spinbox")
# 创建Spinbox控件并设置属性
spinbox = tk.Spinbox(window, from_=0, to=100, width=10,font=('../font/jian.ttf',14),increment=5,wrap=True)
spinbox.pack()
# 创建Spinbox2控件并放置
spinbox2 = tk.Spinbox(window, values=('Python', 'Java', 'C++', 'C#'), width=10,font=('../font/jian.ttf',14)).pack()
# 运行窗口
window.mainloop()

效果

Lisbox控件

列表框(Lisbox)控件用来向用户显示列表项。所有的列表项都包含相同的字体和颜色。提到列表框(Listbox)控件,就不得不讲一下与它非常相似的复选框(Combobox)控件,后续会讲。

常用属性

属性

描述

selectmode

决定选择的模式,tk 提供了四种不同的选择模式,分别是:"single"(单选)、"browse"(也是单选,但拖动鼠标或通过方向键可以直接改变选项)、"multiple"(多选)和 "extended"(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现),默认是 "browse"

activate(index)

将给定索引号对应的选项激活,即文本下方画一条下划线

bbox(index)

返回给定索引号对应的选项的边框,返回值是一个以像素为单位的 4 元祖表示边框:(xoffset, yoffset, width, height), xoffset 和 yoffset 表示距离左上角的偏移位置

index(index)

返回与 index 参数相应选项的序号

itemcget(index, option)

获得 index 参数指定的项目对应的选项(由 option 参数指定)

itemconfig(index, **options)

设置 index 参数指定的项目对应的选项(由可变参数 **option 指定)

示例

代码语言:python
代码运行次数:0
复制
import tkinter as tk

# 创建窗口
window = tk.Tk()
# 设置窗口标题和大小
window.title("Listbox")
window.geometry("300x200")
# 创建滚动条
scrollbar = tk.Scrollbar(window)
# 显示滚动条
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
# 创建Listbox控件,关联滚动条
listbox = tk.Listbox(window,selectmode=tk.SINGLE,yscrollcommand=scrollbar.set,height=5)
# 向Listbox中添加元素/也可以通过设定一个元组,使用enumerate()函数来进行遍历
listbox.insert(1, "apple")
listbox.insert(2, "banana")
listbox.insert(3, "orange")
listbox.insert(4, "grape")
listbox.insert(5, "pear")
listbox.insert(6, "watermelon")
# 显示Listbox控件
listbox.pack()
# 主循环
window.mainloop()

效果

Combobox控件

复选框/下拉菜单(Combobox)控件和Spinbox控件及其相似,不过需要注意的是,复选框(Combobox)控件并不在tkinter库中,而是在tkinter.ttk子模块中。下面通过一个示例来看下它们的区别。

示例

代码语言:python
代码运行次数:0
复制
import tkinter as tk
from tkinter import ttk
# 创建窗口
window = tk.Tk()
# 设置窗口标题和大小
window.title("Combobox")
window.geometry("300x200")
# 创建Combobox控件
combobox = ttk.Combobox(window, values=["Apple", "Banana", "Orange", "Pear"])
# 显示Combobox控件
combobox.pack()
# 主循环
window.mainloop()

效果

共勉

你日渐平庸,甘于平庸,将继续平庸!

博客

  • 本人是一个渗透爱好者,不时会在微信公众号(laity的渗透测试之路)更新一些实战渗透的实战案例,感兴趣的同学可以关注一下,大家一起进步。
  • 之前在公众号发布了一个kali破解WiFi的文章,感兴趣的同学可以去看一下,在b站(up主:laity1717)也发布了相应的教学视频

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 导航
    • pillow库的使用篇
    • 图片脚本篇
    • Tkiner库的使用篇
  • Entry控件
    • 常用属性
    • 示例
    • 效果
  • Spinbox控件
    • 常用属性
    • 示例
    • 效果
  • Lisbox控件
    • 常用属性
    • 示例
    • 效果
  • Combobox控件
    • 示例
    • 效果
  • 共勉
  • 博客
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档