前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【tkinter系列 第四课 Entry和Text窗口部件 】

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

作者头像
叶子陪你玩
发布2020-03-12 15:08:19
1.6K0
发布2020-03-12 15:08:19
举报
前言

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

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

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

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

1.创建一个Entry部件

代码:

代码语言:javascript
复制
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()

效果图:

2.创建一个Text部件

代码:

代码语言:javascript
复制
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()

效果图:

3.添加按钮美化一下

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

代码:

代码语言:javascript
复制
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()

效果图:

解释:

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

4.实现功能

代码:

代码语言:javascript
复制
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()

点击提交:

确定反馈:

取消反馈:


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档