前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小蛇学python(7)tkinter库的基本使用

小蛇学python(7)tkinter库的基本使用

作者头像
用户2145057
发布2018-09-12 15:23:04
2.1K0
发布2018-09-12 15:23:04
举报

最近做一个小项目,又将tkinter库重新温习了一遍。tk其实并不如很多网友说的那样一文不值,它确实不如QT,Wxpython功能强大,但是这也意味着它比较简单。当我们需要做一个小工具,或者以功能为主不注重界面美观的时候,tkinter是我们的首选。

python2与python3关于tkinter有不少不同之处,比如引入包的时候,2需要大写,3却是小写。在这里,我是用python3.6开发的。

代码语言:javascript
复制
root = Tk()
root.title("hello world")
root.minsize(300, 300)
root.mainloop()

这时候最简单的一个页面就出来了。

这时候我们往里面添加一些常用控件,在这里我们介绍Label(标签)、Button(按钮)、Entry(输入框)、Text(文本框)这几个使用频率最高的控件。

我们想添加一个输入框,并且输入框旁边还有输入两个字,该如何做到呢?

代码语言:javascript
复制
label1 = Label(root, text = '输入', background = 'red')
entry1 = Entry(root)

这两句话是对标签参数的设置,现在我们运行一下。

我们发现,界面还是这样。为什么设置了控件,可是控件依旧不显示呢?这是因为虽有了设置控件的代码,却还没有放置控件的代码。说到这里,就不得不提,tkinter的布局管理了。

tkinter的布局管理有三种,第一种是用pack根据标签生成的顺序先后自动布局,灵活性比较小,但是最简单。第二种是把整个界面精细化成网格,以行列为坐标可以精确到每一个位置,比较灵活。第三种不建议使用,就不介绍了,这里我们使用第二种。

代码语言:javascript
复制
label1 = Label(root, text = '输入', background = 'red')
label1.grid(row = 0)
entry1 = Entry(root)
entry1.grid(row = 1 , column = 1)

S{)W)@9BZ3WIOS`]`KAX9B7.png

现在就好了。

我们现在在按照同样的原理,添加一个按钮和一个文本框。

代码语言:javascript
复制
button1 = Button(root, text = '确定', background = 'red')
button1.grid(row = 2, column = 1)
text1 = Text(root)
text1.grid(row = 3, column = 1)

好了,接下来我们想实现一个功能,在输入框中输入数据,会在文本框里实时显示,同时当我们换另一种数据显示的时候,会实时更新。

代码语言:javascript
复制
from tkinter import *
import tkinter

root = Tk()
root.title("hello world")
root.minsize(700, 400)

def inquire_text(event = None):
    var = e3.get()
    text1.delete(0.0, tkinter.END)
    text1.insert(INSERT, var)


label1 = Label(root, text = '输入', background = 'red')
label1.grid(row = 0)

e3 = StringVar()
en3 = Entry(root, validate='key', textvariable=e3)
en3.grid(row = 8, column = 3)
en3.bind('<Return>', inquire_text)

button1 = Button(root, text = '确定', background = 'red')
button1.grid(row = 2, column = 1)
text1 = Text(root)
text1.grid(row = 3, column = 1)

root.mainloop()

整体代码如上,可以理解,输入框的值传给了e3, e3通过bind这个函数绑定了另一个函数,这个函数叫做inquier_text,是我在上面自定义的一个函数。其中delete负责更新,insert负责插入数据。

有时候如果数据特别多,我们一页展示不完,想有个滚动条,这就要用到高级文本框,scrolledtext。

即将之前对文本框的设置替换为这句话

代码语言:javascript
复制
text1 = scrolledtext.ScrolledText(root, wrap=tk.WORD)
text1.grid(row = 10, column = 3)

记得在前面的包别忘了引入:

代码语言:javascript
复制
from tkinter import scrolledtext
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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