Python 学习之 Tkinter「上 」

阅读文本大概需要 6.6 分钟

最近在跟着学做一个简单的银行系统,做界面要用到 GUI「 图形用户界面编程 」,所以今天先为大家介绍一下相关的知识,很有趣,大家看完后练下手。

百度百科以及查阅的资料介绍:

Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 。Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行。

Python 支持多种图形界面的第三方库,包括:Tk、wxWidgets、Qt、GTK 等等。但是 Python 自带的库是支持 Tk 的 Tkinter ,使用 Tkinter ,无需安装任何包,就可以直接使用。我们编写的 Python 代码会调用内置的 Tkinter,Tkinter 封装了访问 Tk 的接口;Tk 是一个图形库,支持多个操作系统,使用Tcl 语言开发;Tk 会调用操作系统提供的本地 GUI 接口,完成最终的 GUI。

创建一个简单窗口

import tkinter

# 创建主窗口
win = tkinter.Tk()

win.title("Mark")  # 标题
win.geometry("400x400+400+200")  # 大小和位置

# 进入消息循环,显示窗口界面
win.mainloop()

标签控件

# 该代码块位于 win.mainloop() 之前,先将组件加载到窗口上,再显示窗口界面

label = tkinter.Label(win, text="To be a better man !", bg="blue", fg="white", font=("黑体", 20), width=10, height=4, wraplength=50, justify="left", anchor="center")

label.pack()  # 加载、显示标签

按钮控件

def f():
    print("To be a better man !")

# 绑定事件,点击按钮控制台输出语句
btn1 = tkinter.Button(win, text="点击1", command=f, width=10, height=2)
btn1.pack()

# 匿名函数输出打印语句
btn2 = tkinter.Button(win, text="点击2", command=lambda: print("To make right decisions !"))
btn2.pack()

# 退出窗口
btn3 = tkinter.Button(win, text="退出", command=win.quit)
btn3.pack()

输入控件 I

# 输入控件,用于显示简单的文本内容

entry = tkinter.Entry(win, show="*")  # show="*" 密文显示
entry.pack()

输入控件 II

# 为控件绑定变量

v = tkinter.Variable()
entry = tkinter.Entry(win, textvariable=v)
entry.pack()

# v 代表输入框这个对象,设置默认值
v.set("To be a better man !")

# 获取输入控件的值,输出在控制台
print(v.get())
print(entry.get())

例:点击按钮输出输入框的内容

def showInfo():
    print(entry.get())

entry = tkinter.Entry(win)
entry.pack()

btn = tkinter.Button(win, text="点击", command=showInfo)
btn.pack()

带滚动条的 Text 控件

t = tkinter.Text(win, width=60, height=10)
sc = tkinter.Scrollbar()  # 滚动条

# side 控件放置在窗体的那一侧,fill 填充方向
sc.pack(side=tkinter.RIGHT, fill=tkinter.Y)
t.pack(side=tkinter.LEFT, fill=tkinter.Y)

# 关联文本框和滚动条
sc.config(command=t.yview)
t.config(yscrollcommand=sc.set)

s = '''Everyone has his own understanding of young,it is a period of time of
beauty and wonders,only after you have experienced the sour ,sweet ,
bitter and salty can you really become a person of significance.there
time of young is limited,it may pass by without your attention,and
when you discover what has happened ,it is always too late.grasping
the young well means a better time is waiting for you in the near future,
or the situation may be opposite .Having a view on these great men in the history
of human being,they all made full use of their youth time ,to do things that are
useful to society,to the whole mankind,and as a consequence ,they are remembered by
later '''

t.insert(tkinter.INSERT, s)

复选框 Checkbutton

def update():
    message = ""
    if h1.get() is True:
        message += "Money\n"
    if h2.get() is True:
        message += "Power\n"
    if h3.get() is True:
        message += "Position\n"

    # 清除 text 中的所有内容
    t.delete(0.0, tkinter.END)
    
    # 复选框选中后,将其对应内容写到文本框中
    t.insert(tkinter.INSERT, message)

h1 = tkinter.BooleanVar()
c1 = tkinter.Checkbutton(win, text="Money", variable=h1, command=update)
c1.pack()

h2 = tkinter.BooleanVar()
c2 = tkinter.Checkbutton(win, text="Power", variable=h2, command=update)
c2.pack()

h3 = tkinter.BooleanVar()
c3 = tkinter.Checkbutton(win, text="Position", variable=h3, command=update)
c3.pack()

t = tkinter.Text(win, width=60, height=6)
t.pack()

单选框

def update():
    print(v.get())

# 注意:一组单选框要绑定同一个变量
v = tkinter.IntVar()

r1 = tkinter.Radiobutton(win, text="apple", value=1, variable=v, command=update)
r1.pack()

r2 = tkinter.Radiobutton(win, text="orange", value=2, variable=v, command=update)
r2.pack()

原文发布于微信公众号 - Python梦工厂(AzMark950831)

原文发表时间:2018-06-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

06.移动先行之谁主沉浮----我的代码我来写(Xaml的优势)

如果移动方向有任何问题请参考===> 异常处理汇总-移动系列(点) 前面几节课,我们都是在前台创建对象,进行一些设置,那么我们为什么不用传统的方法来编程呢? 我...

2545
来自专栏Django Scrapy

Django安装及简单使用1.5

Django安装及简单使用1.5 代码都在github: URL:https://github.com/njxshr/codes/tree/master/t...

3187
来自专栏向治洪

React Native组件只Image

不管在Android还是在ios原生的开发中,图片都是作为控件给出来的,在RN中也有这么一个控件(Image)。根据官网的资料,图片分为本地静态图片,网络图片和...

2077
来自专栏Web 开发

iOS9.1终于可以关闭讨厌的300ms延迟了

https://developer.apple.com/library/prerelease/mac/releasenotes/General/WhatsNew...

650
来自专栏Taylor技术日志

Laravel-Excel导出功能文档

可以在闭包中修改一些属性,很多属性可在配置文件中设置默认值 config/excel.php

86550
来自专栏对角另一面

读Zepto源码之Fx模块

fx 模块为利用 CSS3 的过渡和动画的属性为 Zepto 提供了动画的功能,在 fx 模块中,只做了事件和样式浏览器前缀的补全,没有做太多的兼容。对于不支持...

2770
来自专栏散尽浮华

MongoDB副本(一主一备+仲裁)环境部署记录

MongoDB复制集是一个带有故障转移的主从集群。是从现有的主从模式演变而来,增加了自动故障转移和节点成员自动恢复。 MongoDB复制集模式中没有固定的主结点...

27410
来自专栏菩提树下的杨过

silverlight数据绑定模式TwoWay,OneWay,OneTime的研究

asp.net开发中,数据绑定是一个很简单的概念,控件与数据绑定后,控件可以自动把数据按一定的形式显示出来。(当然控件上的值改变后,可以通过提交页面表单,同时后...

1866
来自专栏林德熙的博客

win10 uwp 车表盘 径向规

这个库是大神做的,要使用大神做的库是很简单。在安装完成了 nuget 就可以在我们需要的项目引用xmlns:controls="using:WinRTXamlT...

1981
来自专栏张善友的专栏

[翻译]开发Silverlight 2.0的自定义控件

原文:Developing a Custom Control for Silverlight 2.0 译者:张善友 Download MediaButto...

2029

扫码关注云+社区