2017年1月22日07:42:48
上一节当中的输入框当中是空的,可以为其添加默认提示。首先尝试的是为Entry加上如Label等的text属性,但是不管用。搜索了一下发现Entry是没有text属性的,而要为其设置默认值有两种方法,使用insert或者使用textvariable。
在解决这个问题的同时,发现了开智之前同侪的笔记,记录非常清晰,并且还在里面发现了使用grid布局的新用法。一定要抽空多去找同侪们讨教。
谨记:学习必须得时时刻刻保持空杯心态,不能有半点傲气。
2017年1月22日14:52:52
接下来需要在点击“确定”之后“显示对应的天气”,分为两步:
- 为“确定”button 添加响应函数。
- 修改Label的值,使其显示的文本信息更新为天气信息(这里想到可以将默认的文本信息显示为欢迎信息。
再遇编码问题
将chap1当中的代码拷贝过来,将其融合到GUI中。过程当中又折腾了半天编码问题(出现在调用Entry widget的get函数时的中文),之后在阅读过这篇文章之后解决,因为通过get()获取到的编码可以直接调用encode()进行编码,所以推测获取时候的编码形式是unicode。
如何改变Label的值
当前自己使用Label来显示查询的天气结果,所以当点击“确定”按钮的时候需要动态的更新Label的值,尝试使用inset和set函数来重置该Label但均提示Label没有该函数。之后在stackoverflow上查找到两种方式:一、使用Label.config(text='changed value')来改变它;二、在创建Label的时候使用textvariable属性来达到目的。第二种所使用textvariable属性的目的很明显是为Label的修改服务,所以这里也采用这种方法:
# import StringVar.
from Tkinter import StringVar
# Initialization.
self.label_text = StringVar()
self.label_text.set(welcome)
self.weather_info = Label(display, textvariable=self.label_text, height=25, width=50)
# Change value.
self.label_text.set("The Changed Text")
整体代码参看这里,演示效果如下:
启动

帮助

查询

历史
