首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图形界面入门之tkinter

图形界面入门之tkinter

作者头像
一只大鸽子
发布于 2022-12-06 01:22:57
发布于 2022-12-06 01:22:57
1.9K0
举报

tkinter简介

tkinter是Python自带的一个GUI包。优缺点非常明显:

优点:简单、快速、无需安装

缺点:界面复古,缺少对一些复杂功能的支持

(注意,Python2的tkinter名称为Tkinter,我们不讨论它)

启动tkinter

在命令行输入

python -m tkinter

就会弹出一个tkinter窗口:

最上面首先是版本是8.6,点击click me!貌似什么都不会发生,点击QUIT就可以退出。

下面介绍tkinter的简单用法,更多的可以到网站GUI是什么 (biancheng.net)或

Python GUI 编程(Tkinter) | 菜鸟教程 (runoob.com) 或Tkinter 8.5 reference: a GUI for Python (tkdocs.com)学习。

tkinter HelloWorld

我们来做一个Helloworld窗口,来了解tkinter的流程。

使用tkinter创建一个窗口,标题名称为Hello,world。

代码语言:javascript
AI代码解释
复制
# -*- coding:utf-8 -*-
import tkinter as tk
# 调用Tk()创建主窗口
root_window =tk.Tk()
# 给主窗口起一个名字,也就是窗口的名字
root_window.title('Hello,world')
#设置窗口大小 450x300
root_window.geometry('450x300')
#开启主循环,让窗口处于显示状态
root_window.mainloop()


  1. 流程如下:
  2. 1. 导入 tkinter
  3. 2. 创建主窗口:root_window =tk.Tk()
  4. 3. 设置窗口属性(标题、大小):

root_window.title('Hello,world')

root_window.geometry('450x300')

  1. 4. 开启主循环

root_window.mainloop()

tkiner 身高计算器

现在我们来做一个有功能的tkinter程序。

效果如下:我们输入身高,点击计算。然后程序通过计算,得到我们的身高并显示出来。

那么我们在上面Helloworld程序的基础上开始制作。首先,我们把窗口名改成“身高计算器”。

root_window.title('身高计算器')

然后我们要把按钮,提示信息放上去。

代码语言:javascript
AI代码解释
复制
# root_window.geometry('450x300')下面添加...
# 设置完窗口后,添加组件
tk.Label(root_window, text="请输入身高").pack()

cms= StringVar()
tk.Entry(root_window, width=7, textvariable=cms).pack()

tk.Label(root_window, text="cm").pack()
tk.Label(root_window, text="你的身高是").pack()

result = StringVar()
tk.Label(root_window, textvariable=result).pack()

tk.Label(root_window, text="cm").pack()

B = tk.Button(root_window, text="计算")
B.pack()

我们主要用到了三种组件,tk.Labeltk.Entrytk.Button,分别表示文本标签、输入框、按钮。创建完组件后需要调用.pack()方法放置,否则不会出现在界面上。

说明:以这个tk.Label为例。参数需要传入它的父容器(这里是root_window),文字内容(text="请输入身高")。然后调用.pack()方法将它放在窗口上。

tk.Label(root_window, text="请输入身高").pack()

这个我们也可以让Label的文字是一个变量。下面我们先创建一个变量result = StringVar(),然后将result作为tk.Label的参数。

result = StringVar() tk.Label(root_window, textvariable=result).pack()

但是点击计算后,并不会有动作,我们还需要将点击按钮和功能绑定。

我们定义函数calculate来实现功能,先获取输入的数据(cmt.get()),再设置输出文本的数据(result.set())。

代码语言:javascript
AI代码解释
复制
def calculate(*args):
    try:
        value = float(cms.get())
        result.set(value)
    except ValueError:
        pass

并且通过command=calculate 将calculate方法和点击按钮绑定。

代码语言:javascript
AI代码解释
复制
B = tk.Button(root_window, text="计算",command=calculate)

完整代码:

代码语言:javascript
AI代码解释
复制
# -*- coding:utf-8 -*-
import tkinter as tk
from tkinter import *

# 调用Tk()创建主窗口
root_window = tk.Tk()
# 给主窗口起一个名字,也就是窗口的名字
root_window.title('身高计算器')
# 设置窗口大小 450x300
root_window.geometry('450x300')

# root_window.geometry('450x300')下面添加...
# 设置完窗口后,添加组件
tk.Label(root_window, text="请输入身高").pack()

cms = StringVar()
tk.Entry(root_window, width=7, textvariable=cms).pack()

tk.Label(root_window, text="cm").pack()
tk.Label(root_window, text="你的身高是").pack()

result = StringVar()
tk.Label(root_window, textvariable=result).pack()

tk.Label(root_window, text="cm").pack()


def calculate(*args):
    try:
        value = float(cms.get())
        result.set(value)
    except ValueError:
        pass


B = tk.Button(root_window, text="计算", command=calculate)
B.pack()

# 开启主循环,让窗口处于显示状态
root_window.mainloop()

除了通过.pack()放置组件,另一种更灵活的方式是.grid(row=r,column=0)方式。这种方式将界面作为网格,然后在网格上放置组件。

代码语言:javascript
AI代码解释
复制
# 设置完窗口后,添加组件
tk.Label(root_window, text="请输入身高",).grid(row=0,column=0)

cms = StringVar()
tk.Entry(root_window, width=7, textvariable=cms).grid(row=0,column=1)

tk.Label(root_window, text="cm").grid(row=0,column=2)
tk.Label(root_window, text="你的身高是").grid(row=1,column=0)

result = StringVar()
tk.Label(root_window, textvariable=result).grid(row=1,column=1)

tk.Label(root_window, text="cm").grid(row=1,column=2)


def calculate(*args):
    try:
        value = float(cms.get())
        result.set(value)
    except ValueError:
        pass


B = tk.Button(root_window, text="计算", command=calculate)
B.grid(row=3,column=3)

当然,如果你觉得字体太小,也可以在font参数设置,font是一个三元组( family, size, style),分别是(字体,大小,格式)。

代码语言:javascript
AI代码解释
复制
tk.Label(root_window, text="请输入身高",font=("Courier", 24, "italic"),height=3).grid(row=0,column=0)

tkinter BMI计算器

稍作修改,我们就可以做出一个BMI计算器:

代码:

代码语言:javascript
AI代码解释
复制
# -*- coding:utf-8 -*-
import tkinter as tk
from tkinter import *

# 调用Tk()创建主窗口
root_window = tk.Tk()
# 给主窗口起一个名字,也就是窗口的名字
root_window.title('BMI计算器')
# 设置窗口大小 450x300
root_window.geometry('450x300')

# root_window.geometry('450x300')下面添加...
# 设置完窗口后,添加组件
tk.Label(root_window, text="请输入身高cm",height=3).grid(row=0,column=0)
cms = StringVar()
tk.Entry(root_window, width=7, textvariable=cms).grid(row=0,column=1)
tk.Label(root_window, text="cm").grid(row=0,column=2)

tk.Label(root_window, text="请输体重kg",height=3).grid(row=1,column=0)
kg = StringVar()
tk.Entry(root_window, width=7, textvariable=kg).grid(row=1,column=1)
tk.Label(root_window, text="kg").grid(row=1,column=2)


tk.Label(root_window, text="你BMI是").grid(row=2,column=0)
result = StringVar()
tk.Label(root_window, textvariable=result).grid(row=2,column=1)



def calculate(*args):
    try:
        cm_ = float(cms.get())
        kg_ = float(kg.get())
        value_ =  kg_ /  ((cm_/100) **2)
        value_ = value_.__round__(3)
        result.set(value_)
    except ValueError:
        pass


B = tk.Button(root_window, text="计算", command=calculate)
B.grid(row=3,column=3)

# 开启主循环,让窗口处于显示状态
root_window.mainloop()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一只大鸽子 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java小工具util系列2:字符串工具
<font color='red'>问题:输出字符串 "0,1,61,"的第一个逗号、第二个逗号、第三个逗号、的索引</font>
刘大猫
2024/11/28
1900
Java实用工具类二:时间格式转换工具
此文仅对自己工作中用到的类进行总结,方便以后的使用。 类一: package com.cn.hnust.util; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateUtil { /** * 获取起止日期 * @param sdf 需要显示的日期格式 * @param date 需要参照的日期 *
芈亓
2022/06/17
1.5K0
Java常见日期格式及日期的计算工具类
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List;
一头小山猪
2020/06/15
4.9K0
日期格式转换
没有人见过风的模样,每当树枝摇曳,水波涟漪或浮云飘过,我们才知道风一直都在从未离开!
栖西
2023/10/17
2K0
日期格式转换
java中各种时间格式的转化(包含java多数情况下时间的转换)
如果你想设置一个时间从一天的开始到一天的结束,那么你先要设置日期的格式为yyyy-MM-dd,然后在设置一个日期的格式为yyyy-MM-dd HH:mm:ss,然后在之前的日期格式上加上00:00:00-23:59:59转换成该日期格式,就可以设置区间为1天了。代码如下 如果时间为年月日,可以增加时分秒 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat
gfu
2019/08/28
2.4K0
java基础|java中时间与字符串之间的转换及获取常用时间
DEMO 总评 时间与字符串之间的转换是开发中必不可少的技能, 有Calendar,Date,SimpleDateFormat等类的使用. 这块建议封装成工具类直接调用, 不用在代码里面重复造轮子, 少年,加油吧!!
微笑的小小刀
2019/11/14
1.5K0
java基础|java中时间与字符串之间的转换及获取常用时间
JAVA 常用日期工具类:DateUtil的基本常见方法
在我们java开发中,Date日期这个字段会被经常使用,比如获取当前系统的时间,获取上个月,上一年的时间,以及获取两个日期相差的时分秒数,或者对日期类型进行格式化,等等,等等,总之日期的使用多种多样,但万变不离其宗,今天我就整理了部分常见的java对Date的操作方法,供大家使用。
一诺千金
2020/04/30
14.3K0
java实用类(四)-Date 和 Calendar
创建日历类对象,不是new出来的,而是通过日历类自带的静态方法getInstance,获取;
化羽羽
2022/10/28
5540
Java时间日期工具类
     leftDaterightDateleftDaterightDateleftDaterightDate@param @param @return      leftDaterightDateleftDaterightDateleftDaterightDate@param @return      datecalendar getInstancecalendardatecalendarcalendarcalendarcalendar@param @return    老是忘,还是记录下 -_-||
sunonzj
2022/06/21
8260
Android开发笔记(五)日期的处理
文本字符串的处理,数字格式是第一常见的,日期格式就是第二常见的了。日期的格式转换,主要是四种:Date转String、String转Date、Date转Calendar、Calendar转Date。   Date转String,先设置要转换的日期格式,再做格式化,代码如下: SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");  //格式中间可以再插入/、-、:等日期时间分隔符 Date date = new Date(); String str = sdf.format(date); System.out.println("date="+date+", str="+str);   String转Date SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String str = "20151124093336"; Date date = sdf.parse(str); System.out.println("date="+date+", str="+str);   Date转Calendar Calendar calendar = Calendar.getInstance(); Date date = new Date(); calendar.setTime(date); System.out.println("date="+date+", calendar="+calendar);   Calendar转Date Calendar calendar = Calendar.getInstance(); Date date = calendar.getTime(); System.out.println("date="+date+", calendar="+calendar);
aqi00
2019/01/18
1.6K0
Java日期计算常用方法《详细版》
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》 🐅 学会Golang语言,畅玩云原生,走遍大小厂~
猫头虎
2024/04/07
5330
java最全最常用的日期工具类(随时补充)
@Slf4j public final class DateUtils { private DateUtils() { } private static final String FORMAT_YYYYMMDDHHMMSS = "yyyy-MM-dd HH:mm:ss"; public static final String FORMAT_YYYY_MM_DD = "yyyy-MM-dd"; public static final String FORMAT_
疯狂的KK
2023/04/10
1.5K0
【Java 基础篇】Java Calendar 类:日期和时间处理指南
在 Java 中,日期和时间的处理是常见的任务之一。为了更灵活地处理日期和时间,Java 提供了 java.util.Calendar 类,它提供了一种面向对象的方式来操作日期和时间。本篇博客将详细介绍 Calendar 类的使用方法,特别是面向基础小白的读者。
繁依Fanyi
2023/10/12
2.3K0
【Java 基础篇】Java Calendar 类:日期和时间处理指南
Java Date 和 Calendar 实例
当前日期:  2012-03-07 2012-03-07 12:30:11 2012-3-7 12:30:11.101 计算周:  -3 3/5/12 12:30 PM 3/10/12 12:30 PM 3/12/12 12:30 PM 3/3/12 12:30 PM 计算月:  2012-03-01 2012-03-31 2012-02-01 2012-02-29 2012-04-01 2012-04-30 计算年:  2012-01-01 2012-12-31 2011-01-01 2011-12-31 2013-01-01 2013-12-31 366 in 2012 计算季度:  2012-3-7 in [ 2012-1 : 2012-3 ] 31 in [ 2012-3-7 ] true 日期格式转换与计算:  Wed Jun 20 00:00:00 CST 2012 Wednesday 2012-06-02 -> 2012-06-12间隔天数:10
阳光岛主
2019/02/19
3.2K0
一步一步教你使用Java Calendar类进行日期计算
咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点之Calendar类,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~
bug菌
2024/07/29
4550
一步一步教你使用Java Calendar类进行日期计算
java中经常使用的日期格式化(全)「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115600.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/10
3K0
java计算指定日期的上个月
Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方法calendar fields如YEAR , MONTH , DAY_OF_MONTH , HOUR ,等等,以及用于操纵该日历字段,如获取的日期下个星期。 时间上的瞬间可以用毫秒值表示,该值是从1970年1月1日00:00 00:00.000 GMT(Gregorian)的Epoch的偏移量。 Calendar提供了一种类方法getInstance ,用于获取此类型的一般有用的对象。 Calendar的getInstance方法返回一个Calendar对象,其日历字段已使用当前日期和时间进行初始化:
别团等shy哥发育
2023/02/25
2.2K0
java计算指定日期的上个月
Calendar类_java calendar
Calendar是java util包下的一个工具类,提供了很方便的不同日期格式的处理。啥也不说了,直接撸代码:
全栈程序员站长
2022/11/09
1.1K0
日历时间格式Date与Calender
一、Date 1.1.概述 获取当前系统时间 大部分构造方法已经过时 构造方法 Date(); 创建一个Date,对应当前时间,精度在毫秒值 Date(long date); 根据时间戳毫秒数,创建对应的Date对象,时间戳是从1970-01-01 00:00:00 GMT tips: 中国采用的东八区时间 1970-01-01 08:00:00 常用方法: long getTime(); 通过Date类对象获取对应当前时间的毫秒数 System.currentTi
2020/10/23
1.3K0
Java中String、Date、LocalDate互相转换工具类
该工具类实现的功能有: 1.String日期转Date 2.Date日期转String 3.Date日期转LocaDate 4.LocalDate转Date 5.获取当前日期(String) 6.获取当前日期(Date) 7.获取两个日期之间的间隔 8.获取日期的星期 9.比较两个日期的大小 10.日期转为时间戳 11.时间戳转日期 12.去除日期连接符号(“-”),转为long 13.日期加上相应的天数 代码如下所示: import java.tex
林老师带你学编程
2022/05/06
3.1K0
推荐阅读
相关推荐
java小工具util系列2:字符串工具
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档