如何用Python制作可视化输入界面

继续研究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)