今天,我们来使用Python完成一个小工具的制作。很简单,就是对于摄氏温度和华氏温度的相互换算。但是,我们的目的是复习一下之前学过的Python中tkinter的小内容。

复习下前面的知识

先来看下今天要完成的内容

界面效果

最终效果展示

Pmw模块

除了tkinter模块外,我们今天还用了一个叫Pmw的模块,它里面有很多功能丰富的控件,比如,常用的EntryField,就是类似我们今天Label+Entry控件,但是它的功能比简答二者组合的功能要丰富的多,EntryField控件可以对于输入进行限定,这样就不需要我们编写额外的代码了。

省时省力

当然,我们今天不用这个控件了(它封装的太简单了,就几个参数)。我们使用它提供的另外两个控件,Balloon和MessageBar控件,来感受下它们的强大之处。Balloon,顾名思义,就是热气球,对于电脑的话大家第一印象是不是一个类似提示框的东西。

balloon

MessageBar这个控件也好理解,就是信息提示条,这两个东西就是上面图中我用红线框住的内容。

有了信息提示用户获得感会更强

对于EntryField知识感兴趣的小伙伴可以参见我的另外几篇博文

使用Python制作一个GUI词云自动生成工具,让你秒变数据分析大师

详解Python文件对话框filedialog和颜色选择colorchooser的使用

详解GUI词云自动生成工具中词云属性设置界面的实现(连载六)

Python自动生成词云工具(GUI)之数据清洗功能实现(连载五)

详解词云自动生成工具的数据清洗界面制作过程(连载四)

这是个连载的内容,主要制作了一个词云自动生成工具,亲测可用,感兴趣的小伙伴可以自己敲代码试试看,一个不错的工具,可以扩展哦!

这几篇连载内容里有很多关于Pmw模块中的控件……

tkinter的一些技巧

对于GUI界面的制作,我们知道Python有很多库提供了类似的功能和方法,比如wxPython、Qt、Kivy等等,而最为经典的要数我们的tkinter库了,为什么说它经典,因为它集成在了Python开发环境中,我们不需要额外进行安装,而其它第三方库都是需要安装的。

其实说白了,tkinter库的学习,主要是三点:

tkinter不外乎这几个点

控件、事件、布局

对于控件属性其实都是大同小异的,使用多了,自然而然就会了。最主要的还是要掌握好常用的事件处理机制和控件的布局方式。

控件的美观布局使得程序更能面向用户、易操作;而事件处理机制其实是程序的核心,它使得程序可用性更强(试想一大堆漂亮的按钮如果不能点击,那么这些按钮就还是没有用处的)

tkinter中控件的布局其实很简单,单个控件尽量将其放入到Frame、TopLevel这样的容器控件中,这样对于控件与控件之间的留白就更好处理,通过设置容器控件的relief属性,还可以给控件组添加一些边框,使得程序更加美观。

想要美观,布局很重要

对于事件,无非就是鼠标按下了,键盘松开了类似这样的操作。记住几个关键操作也就可以了。但是,这个里面比较重要的就是类、方法、函数在一个控件中是如何绑定的,同一个控件如果同时绑定几个方法的话,首先会调用哪个方法呢?(后续我们会讨论)

对于键盘鼠标的响应事件

布局,无非就是grid、pack、place,掌握这些就基本可以编写一个美观的GUI程序了

废话不多说,我们直接看下今天的代码

代码实现

# coding:utf-8

import Pmw

from tkinter import *

def is_number(s):

try:

float(s)

return True

except ValueError:

pass

try:

import unicodedata

unicodedata.numeric(s)

return True

except (TypeError, ValueError):

pass

return False

def btnCalc():

if is_number(swdVar.get()) and is_number(hwdVar.get()):

print('传入一个数值型即可,两个都是数值没法计算了!')

swdVar.set('')

hwdVar.set('')

elif is_number(swdVar.get()) and not is_number(hwdVar.get()):

# 摄氏温度转换为华氏温度

h = 9 / 5.0 * float(swdVar.get()) + 32

hwdVar.set('{}'.format(h))

elif not is_number(swdVar.get()) and is_number(hwdVar.get()):

# 华氏温度转化为摄氏温度

s = 5 / 9.0 * (float(hwdVar.get()) - 32)

swdVar.set('{}'.format(s))

else:

print("检查填入的数值")

root = Tk()

root.title('温度计算器')

root.geometry('400x250+100+100')

# 添加热气球

balloon = Pmw.Balloon(root)

# 摄氏温度变量

swdVar = StringVar()

f1 = Frame(root, relief='groove', bd=2)

lb1 = Label(f1, text="摄氏温度")

lb1.pack(side=LEFT, padx=5, pady=5)

swd = Entry(f1, textvariable=swdVar)

swdVar.set('输入一个数值')

swd.pack(side=RIGHT, fill=BOTH, expand=YES, padx=5, pady=5)

f1.pack(side=TOP, fill=BOTH, expand=YES, padx=10, pady=10)

balloon.bind(swd, '摄氏温度',

'输入摄氏温度,单击计算按钮后将转化为华氏温度')

# 华氏温度变量

hwdVar = StringVar()

f2 = Frame(root, relief='groove', bd=2)

lb2 = Label(f2, text="华氏温度")

lb2.pack(side=LEFT, padx=5, pady=5)

hwd = Entry(f2, textvariable=hwdVar)

hwd.pack(side=RIGHT, fill=BOTH, expand=YES, padx=5, pady=5)

hwdVar.set('输入一个数值')

f2.pack(side=TOP, fill=BOTH, expand=YES, padx=10, pady=10)

balloon.bind(hwd, "华氏温度",

"输入华氏温度,单击计算按钮后转化为摄氏温度")

# 下面是按钮

f3 = Frame(root)

bcal = Button(f3, text='计算', relief='ridge', bd=2, command=btnCalc)

bcal.pack(side=LEFT, fill=BOTH, expand=YES, padx=10, pady=5)

balloon.bind(bcal, "温度转换",

"上面文本框中输入任意一个单击按钮完成计算")

bext = Button(f3, text='退出', relief='ridge', bd=2, command=root.destroy)

bext.pack(side=RIGHT, fill=BOTH, expand=YES, padx=10, pady=5)

balloon.bind(bext, "退出程序","单击退出程序")

f3.pack(side=TOP, fill=BOTH, expand=YES, padx=5, pady=5)

# 信息条,展示帮助信息

messageBar = Pmw.MessageBar(root,

entry_width=40,

entry_relief='groove',

labelpos='w',

label_text='提示信息:')

# 布局信息条

messageBar.pack(fill=X, expand=YES, side=BOTTOM, padx=10, pady=5)

# 绑定信息条

balloon.configure(statuscommand=messageBar.helpmessage)

root.mainloop()

暂告一段落

好了,今天的内容就到这里了,对于Python GUI感兴趣的小伙伴们可以关注我,后续会推出更多精彩内容。本人近期也在学习一些Python编程的其它内容,会逐步跟大家分享看到的知识点和实例,有意提高Python编程能力的小伙伴一定要关注我,大家一起学习进步……

转载请注明出处,百家号:Python高手养成。

python温度转换_一步一步教会你,详解用Python实现一个简易的温度换算GUI小工具...相关推荐

  1. Python基本语法_集合set/frozenset_内建方法详解

    目录 目录 前言 软件环境 可变集合Set set函数创建集合 创建空集合 集合元素的唯一性 集合推导式 set类型对象的内置方法 add增加一个元素 remove删除一个元素 pop随机删除并返回一 ...

  2. python 拓扑排序_拓扑排序(topsort)算法详解

    在图论中,由某个集合上的偏序得到全序的策略就是拓补排序算法.拓扑排序常出现在涉及偏序关系的问题中,例如时序的先后.事物的依赖等.针对这些问题拓扑排序通常能有效地给出可行解. 为了便于理解,我们先来看一 ...

  3. python爬财务数据_同花顺财经-财务数据爬取思路详解-python爬虫

    同样的开头,近日,群友在讨论问题的时候发来一链接,询问如何抓取个股页面上财务指标,好奇心旺盛的博主立马打开网页研究了一番. 网址如下:http://stockpage.10jqka.com.cn/60 ...

  4. python 读取图片转换为一维向量_对Python中一维向量和一维向量转置相乘的方法详解...

    对Python中一维向量和一维向量转置相乘的方法详解 在Python中有时会碰到需要一个一维列向量(n*1)与另一个一维列向量(n*1)的转置(1*n)相乘,得到一个n*n的矩阵的情况.但是在pyth ...

  5. 排序算法(五)——堆排序算法详解及Python实现

    本文目录 一.简介 二.算法介绍 三.代码实现 排序算法系列--相关文章 一.简介 堆排序(Heap Sort)算法,属于选择排序类,不稳定排序,时间复杂度O(nlogn). 堆排序由Floyd和Wi ...

  6. python温度转换代码分析_Python温度转换实例分析

    本文主要研究的是Python语言实现温度转换的相关实例,具体如下. 代码如下: #TempConvert.py val=input("请输入带有温度表示符号的温度值(例如:32c)" ...

  7. python温度转换代码示例_python温度转换华氏温度实现代码

    这篇文章我们来讲一下在网站建设中,python温度转换华氏温度实现代码.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 相信有些小伙伴,在没接触py之前,肯定都是有所准备的, ...

  8. python温度转换实例_Python温度转换实例分析

    Python温度转换实例分析 本文主要研究的是Python语言实现温度转换的相关实例,具体如下. 代码如下: #TempConvert.py val=input("请输入带有温度表示符号的温 ...

  9. pythonprint字节按照16进制输出_对python以16进制打印字节数组的方法详解

    对python以16进制打印字节数组的方法详解 一.问题描述 如果直接用print打印bytes的话,有时候会直接显示ascii对应的字符,看起来很蛋疼. 二.运行效果 上面一行是直接用print打印 ...

最新文章

  1. shell中if条件之数值的比较方法
  2. 对移码满足二进制减法的小思考
  3. dbms数据库管理系统_基本数据库管理系统(DBMS)能力问题和解答
  4. matlab 左上角,matlab – 访问’uitable`的左上角
  5. Linux内核OOM机制的详细分析
  6. 常用MIME类型,解决IIS布署后字体文件、mp4视频文件等not found 的错误
  7. 调用天气接口获取天气预报
  8. 网络工程计算机等级,网络工程师题库_计算机等级考试题库_考试资料网
  9. Rust语言教程(2) - 从熟悉的部分开始
  10. springboot集成solr实现全局搜索系列
  11. 苹果听天由命 未雇佣游说公司处理欧盟补税案
  12. 这几天心里颇不宁静,采的不是信号,而是寂寞
  13. Google Pixel 刷机、OpenGApps和系统分区扩容
  14. Moodle功能插件汇总
  15. MySQL数据库表的插入,修改,删除操作实验
  16. 「CG原画插画教程」初学者如何练习人体动态结构?
  17. 明源服务器修改固定IP,8.5 IP源站选路选项
  18. TCP的运输连接管理——TCP的连接建立
  19. 管理大师明茨伯格:成功的领导者是什么样的?
  20. vb.net 教程 5-4 颜色

热门文章

  1. MediaStore数据库分析
  2. 【云原生之Docker实战】使用Docker部署phpMyAdmin数据库管理工具
  3. android .9图片详解及应用
  4. RC522RFID读卡寻卡失败原因
  5. 【转】互联网金融产品需要什么样的产品经理?
  6. CS224W-6-message passing and node classification 第3部分
  7. 天龙八部服务端数据传递
  8. Android事件分发之ACTION_CANCEL机制及作用
  9. linux ipa 权限管理,FreeIPA增加Linux用户及sudo权限
  10. HDU5128The E-pang Palace(计算几何暴力枚举)