0
点赞
收藏
分享

微信扫一扫

【tkinter系列 第四课 Entry和Text窗口部件 】

12a597c01003 2022-03-24 阅读 64



前言


python中通常我们写程序,显示结果和操作都是在终端区,如果要想实现一个有显示界面的程序那该怎样实现呢?python中有好几个库都可以实现,这个系列我们一起来学习如何使用python自带的tkinter库来实现。

今天这课将学习Entry和Text窗口部件,Entry单行文本输入框,Text多行文本输入框。文本框通常用来获取我们输入的一个内容。


比如下面这个反馈表单就用到这样的两个部件。

       【tkinter系列 第四课 Entry和Text窗口部件 】_文本框      

       【tkinter系列 第四课 Entry和Text窗口部件 】_python_02      

下面我们就来模拟一个类似用户提交反馈的情况。用户输入内容后,点击提交后,会弹出一个消息框,将用户的信息显示出来。





1.创建一个Entry部件


代码:

from tkinter import *
#创建一个主窗口
root = Tk()
# 创建 宽200高200的窗口 x是小写的英文字符
root.geometry('200x200')


label1=Label(root,text="联系方式")
# anchor 表示标签放在的位置,默认center,这里设置靠左
# N S W E 对应 北 南 西(左) 东(右)
label1.pack(anchor=W)


entry = Entry(root)
# 和label1一样的原理
entry.pack(anchor=W)


# 程序一直循环,直到我们关闭窗口
root.mainloop()


效果图:

       【tkinter系列 第四课 Entry和Text窗口部件 】_python_03




2.创建一个Text部件


代码:

from tkinter import *
#创建一个主窗口
root = Tk()
# 创建 宽200高200的窗口 x是小写的英文字符
root.geometry('200x200')


label1=Label(root,text="联系方式")
# anchor 表示标签放在的位置,默认center,这里设置靠左
# N S W E 对应 北 南 西(左) 东(右)
label1.pack(anchor=W)


entry = Entry(root)
# 和label1一样的原理
entry.pack(anchor=W)


label2 = Label(root, text="反馈内容")
# anchor 表示标签放在的位置,默认center,这里设置靠左
# N S W E 对应 北 南 西(左) 东(右)
label2.pack(anchor=W)


# Text默认高度是占用剩余的所有空间的,
# 这里指定height=5为文本框是5个字符高度
text = Text(root, height=5)
# 和label1一样的原理
text.pack(anchor=W)


# 程序一直循环,直到我们关闭窗口
root.mainloop()


效果图:

       【tkinter系列 第四课 Entry和Text窗口部件 】_关闭窗口_04




3.添加按钮美化一下



前面看上去贴的边缘太近了,不是很美观,下面通过添加一个边距更改一下。


代码:


from tkinter import *
#创建一个主窗口
root = Tk()
# 创建 宽200高250的窗口 x是小写的英文字符
root.geometry('200x250')


label1=Label(root,text="联系方式")
# anchor 表示标签放在的位置,默认center,这里设置靠左
# N S W E 对应 北 南 西(左) 东(右)
label1.pack(anchor=W,padx=10,pady=10)


entry = Entry(root, width=180)
# 和label1一样的原理
entry.pack(anchor=W, padx=10,)


label2 = Label(root, text="反馈内容")
# anchor 表示标签放在的位置,默认center,这里设置靠左
# N S W E 对应 北 南 西(左) 东(右)
label2.pack(anchor=W, padx=10, pady=10)


# Text默认高度是占用剩余的所有空间的,
# 这里指定height=5为文本框是5个字符高度
text = Text(root, width=180, height=5)
# 和label1一样的原理
text.pack(anchor=W, padx=10,)


button =Button(root,text="提交",width=8,height=1)
button.pack(anchor=E, padx=10,pady=10)
# 程序一直循环,直到我们关闭窗口
root.mainloop()


效果图:

       【tkinter系列 第四课 Entry和Text窗口部件 】_python_05      

解释:


这里代码更改了一下,窗口高度调成250,padx表示部件离左右的距离,pady表示离上下的距离,width表示部件的宽度,这里可以根据自己的需要来调整。





4.实现功能



代码:

from tkinter import *
import tkinter.messagebox
#创建一个主窗口
root = Tk()
# 创建 宽200高250的窗口 x是小写的英文字符
root.geometry('200x250')


label1=Label(root,text="联系方式")
# anchor 表示标签放在的位置,默认center,这里设置靠左
# N S W E 对应 北 南 西(左) 东(右)
label1.pack(anchor=W,padx=10,pady=10)


entry = Entry(root, width=180)
# 和label1一样的原理
entry.pack(anchor=W, padx=10,)


label2 = Label(root, text="反馈内容")
# anchor 表示标签放在的位置,默认center,这里设置靠左
# N S W E 对应 北 南 西(左) 东(右)
label2.pack(anchor=W, padx=10, pady=10)


# Text默认高度是占用剩余的所有空间的,
# 这里指定height=5为文本框是5个字符高度
text = Text(root, width=180, height=5)
# 和label1一样的原理
text.pack(anchor=W, padx=10,)


# 定义一个发送消息的方法
def send_info():
# 获取entry单行文本框内容
entry_text=entry.get()
# 获取text多行文本框的内容,从第一个字符到最后一个字符
text_text = text.get('1.0',END)
# 如果点击确定,choice=True,点击cancel返回False
choice=tkinter.messagebox.askokcancel('提示','确定发送吗?')
if choice:
tkinter.messagebox.showinfo(
'提示', '反馈成功'+'你的反馈内容是:'+text_text+'反馈人联系方式:'+entry_text)
else:
tkinter.messagebox.showinfo(
'提示', '反馈失败'+'你已取消反馈')


# 给按钮绑定一个发送消息的方法
button = Button(root, text="提交", width=8, height=1, command=send_info)
button.pack(anchor=E, padx=10,pady=10)
# 程序一直循环,直到我们关闭窗口
root.mainloop()


点击提交:

       【tkinter系列 第四课 Entry和Text窗口部件 】_关闭窗口_06      

确定反馈:

       【tkinter系列 第四课 Entry和Text窗口部件 】_文本框_07      

取消反馈:

       【tkinter系列 第四课 Entry和Text窗口部件 】_文本框_08



全文完,觉的有收获就点个赞或者转发一下吧。




长按二维码,

加关注!

叶子陪你玩

【tkinter系列 第四课 Entry和Text窗口部件 】_关闭窗口_09



举报

相关推荐

0 条评论