继续研究Python的应用,我们在有些程序中需要输入一些参数,可由几种方式实现
1.直接写在程序里,适合编程使用
2.使用input()函数,运行程序时输入
3.做成可视化界面,然后让程序获得
今天主要尝试第三种方法,通过搜索发现tkinter是Python下面向tk的图形界面接口库,可以方便地进行图形界面设计和交互操作编程。tkinter的优点是简单易用、与Python的结合度好。tkinter在Python 3.x下默认集成,不需要额外的安装操作,所以先用这个库上手。
搜索了不少文章,发现https://blog.csdn.net/sinat_41104353/article/details/79302618这篇最好用,可以直接拿来使用。
比如在如何用Python自动获取加密货币恐慌指数并提醒这篇文章中,当我获取了恐慌指数的值时,有两个参数需要输入,一个是超过多少之后提醒,比如超过80就是大牛市了;还有一个是小于多少提醒,这个时候是币价严重低估,比如小于10;我想把这两个参数用可视化界面输入,该怎么用呢?
from tkinter import * # 导入库
root = Tk()# 建立tkinter窗口
root.title("恐慌指数提醒参数")# 设置标题
# 设置标签
Label(root, text='超过多少提醒:').grid(row=0, column=0)# 选项row代表行,column代表列
Label(root, text='小于多少提醒:').grid(row=1, column=0)
# 输入框
e1 = Entry(root)
e2 = Entry(root)
# tkinter提供了三种布局组件的方式,第一种是pack(),第二种是Grid()网格,第三种是prase()
# Grid允许我们使用表格的形式管理组件
e1.grid(row=0, column=1, padx=10, pady=5)
e2.grid(row=1, column=1, padx=10, pady=5)
Button(root, text='获取参数并继续', width=10, command=root.quit) \
.grid(row=3, column=1, sticky=E, padx=10, pady=5)# 退出直接调用根窗口的quit方法
mainloop()
remind_high =float(e1.get())
remind_low =float(e2.get())
print(remind_high)
print(remind_low)
运行之后如下图,当我们点击按钮“获取参数并继续时”,输入的两个值就会传递给remind_high和remind_low。
这时,我们就可以结合如何用Python自动获取加密货币恐慌指数并提醒文章中的程序,把两个参数换成remind_high和remind_low继续运行就可以了,接下来的程序如下:
import json
import requests
# 异常监控用
def send_dingding_msg1(content, robot_id='钉钉机器人ID'):
try:
msg = {
"msgtype": "text",
"text": {"content": content + '\n' + datetime.datetime.now().strftime("%m-%d %H:%M:%S")}
}
headers = {"Content-Type": "application/json ;charset=utf-8 "}
url = 'https://oapi.dingtalk.com/robot/send?access_token=' + robot_id
body = json.dumps(msg)
status = requests.post(url, data=body, headers=headers)
if status.status_code == 200:
return status.json()
return status
except Exception as err:
print('钉钉发送失败', err)
while True:
try:
url ="https://api.alternative.me/fng/?limit=0&format=json&date_format=cn"
response = requests.get(url)
if response.text:# 发现有时候会出现错误导致返回数据为空,加此目的当数据为空时继续获取余额
FGI =float(response.json()['data'][0]['value'])# 值
print('FGI', FGI)
value_classification = response.json()['data'][0]['value_classification']# 级别
print('value_classification:', value_classification)
timestamp = response.json()['data'][0]['timestamp']# 时间
print('timestamp', timestamp)
time.sleep(2)
# break
else:
time.sleep(2)
continue
if FGI
print('FGI', FGI)
content ='恐慌指数小于指定值,为'+str(FGI)#
send_msg1 = send_dingding_msg1(content)
print(send_msg1)
break
if FGI >remind_high:# 当大于指定值时实现钉钉提醒
print('FGI', FGI)
content ='恐慌指数大于指定值,为'+str(FGI)#
send_msg1 = send_dingding_msg1(content)
print(send_msg1)
except Exception as order_err:
print("查询出错,继续尝试", order_err)
time.sleep(3)