Tkinter简单布局小窗口实现获取时间、天气、求和、差

作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,直接import即可使用

这是程序效果图

 代码如下:

import tkinter
import datetime
import requests
from bs4 import BeautifulSoup

window = tkinter.Tk() # 实例化object,建立窗口window
window.geometry('300x400') # 设定窗口的大小,乘是x


# 获取时间
def get_time():
now_time = datetime.datetime.now().strftime("%Y-%m-%d_%H:%M:%S") # 获取当前时间
var.set(now_time) # 赋值给var


def get_htmltext(url):
res = requests.get(url)
res.encoding = 'utf-8'
return res.text


def get_weather():
url = 'http://www.weather.com.cn/weather/101200101.shtml'
data = get_htmltext(url)
demo = BeautifulSoup(data, features="html.parser")
# p = demo.find('input', id="hidden_title")
# 标签字符中带有-,比如data-custom;二是class不能看作标签属性。解决的办法是在attrs属性用字典进行传递参数:可以查看网页源码来找对应的元素名称
p1 = demo.find(attrs={'class': 'sky skyid lv3 on'}).get_text()
var.set(p1)


b1 = tkinter.Button(window, text="获取当前时间", command=get_time)
b1.place(x=10, y=0)

b2 = tkinter.Button(window, text="获取当前天气", command=get_weather)
b2.place(x=100, y=0)

e1 = tkinter.Entry(window, show=None) # 显示成明文形式输入框
e1.place(x=10, y=35)

e2 = tkinter.Entry(window, show=None) # 显示成明文形式输入框
e2.place(x=10, y=60)


# 加法
def sum_e():
a = e1.get()
b = e2.get()
if len(a) == 0 or len(b) == 0:
var.set('请输入数字')
else:
var.set(float(a) + float(b))


# 减法
def dif_e():
a = e1.get()
b = e2.get()
if len(a) == 0 or len(b) == 0:
var.set('请输入数字')
else:
var.set(float(a) - float(b))


b3 = tkinter.Button(window, text="和", command=sum_e)
b3.place(x=160, y=30)

b4 = tkinter.Button(window, text="差", command=dif_e)
b4.place(x=160, y=60)

var = tkinter.StringVar() # 将label标签的内容设置为字符类型,用var来接收hit_me函数的传出内容用以显示在标签上
l1 = tkinter.Label(window, textvariable=var, height=15, width=20, bg='red') # 在图形界面上设定标签
l1.place(x=10, y=90)

# 进入消息循环
window.mainloop()
原文地址:https://www.cnblogs.com/lhm-test/p/12888995.html