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")

整体代码参看这里,演示效果如下:

  • 启动

  • 帮助

  • 查询

  • 历史

results matching ""

    No results matching ""