作为 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()