使用Python Tkinter库打造简陋股票补仓计算器桌面应用

2024年05月19日12:25:08 科技 1790

前言

大家好,最近洒家在股市里亏麻了,洒家就寻思用python捣鼓一个简陋的股票补仓计算器的桌面小工具,方便随时计算补仓成本,废话不多说,咱们这就开干!

使用Python Tkinter库打造简陋股票补仓计算器桌面应用 - 天天要闻


编程环境

1.文中电脑操作系统:win7


2.文中所使用的python模块:

(1).Tkinter (标准库,不需要pip安装)

(2).pyinstaller (第三方模块,需要pip安装)

安装命令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

官方文档:https://www.pyinstaller.org/


3.文中所使用的IDE:pycharm2022版


界面简陋的设计


使用Python Tkinter库打造简陋股票补仓计算器桌面应用 - 天天要闻


完整代码

from tkinter import *


class BC(Frame): #继承Frame组件
    title_BC = '计算公式:(第一次买入数量*买入价+第二次买入数量*买入价+交易费用)/(第一次买入数量+第二次买入数量)'

    def __init__(self):
        super(BC, self).__init__()
        self.number_1 = StringVar(value='请输入第一次买入的数量')
        self.number_2 = StringVar(value='请输入第二次买入的数量')
        self.price_1 = StringVar(value='请输入第一次买入的价格')
        self.price_2 = StringVar(value='请输入第二次买入的价格')
        self.commission = StringVar(value='请输入手续费')
        self.result = StringVar()

    def set_label(self, text, row, column, columnspan=None, sticky=E + W):
    		''' 设置界面里的标签组件 '''
        Label(
            self,
            border=1,
            font=('微软雅黑', 10, 'bold'),
            text=text,
        ).grid(row=row, column=column, columnspan=columnspan, sticky=sticky)

    def set_entry(self, var, row, column, sticky=E + W):
    	''' 设置界面里的输入框组件 '''
        en = Entry(
            self,
            border=1,
            font=('微软雅黑', 10, 'bold'),
            textvariable=var,
            justify='center',
        )
        en.grid(row=row, column=column, sticky=sticky)
        en.bind("<Button-1>", lambda e: var.set(''))

    def set_but(self, text, row, column, columnspan=None, sticky=E + W, cb=None):
    	''' 设置界面里的按钮组件 '''
        Button(
            self,
            text=text,
            border=1,
            font=('微软雅黑', 12, 'bold'),
            command=cb #绑定计算方法
        ).grid(row=row, column=column, columnspan=columnspan)

    def compute(self):
       #   计算补仓结果的方法
        # (第一次买入数量*买入价+第二次买入数量*买入价+交易费用)/(第一次买入数量+第二次买入数量)
        try:
            data = [
                float(self.number_1.get()),
                float(self.number_2.get()),
                float(self.price_1.get()),
                float(self.price_2.get()),
                float(self.commission.get()),
            ]
            n1, n2, p1, p2, c = data
            result = (n1 * p1 + n2 * p2 + c) / (n1 + n2)
            self.result.set(result)
        except BaseException as e:
            # print(e)
            self.result.set('Eorr')

    def run(self):
    	'''设置主窗口并在主窗口中放置按钮组件 输入框组件 标签组件'''
        self.master.title('补仓计算器_By李文博')
        self.pack()
        self.set_label(text=BC.title_BC, row=0, column=0, columnspan=4)
        self.set_label(text='第一次买入数量', row=1, column=0)
        self.set_entry(var=self.number_1, row=1, column=1)
        self.set_label(text='第一次买入价格', row=1, column=2)
        self.set_entry(var=self.price_1, row=1, column=3)
        self.set_label(text='第二次买入数量', row=2, column=0)
        self.set_entry(var=self.number_2, row=2, column=1)
        self.set_label(text='第二次买入价格', row=2, column=2)
        self.set_entry(var=self.price_2, row=2, column=3)
        self.set_label(text='手续费', row=3, column=0)
        self.set_entry(var=self.commission, row=3, column=1)
        self.set_label(text='计算结果', row=3, column=2)
        self.set_entry(var=self.result, row=3, column=3)
        self.set_but(text='计算', row=4, column=0, 
                     columnspan=4, cb=self.compute)#绑定compute方法
        self.mainloop() #循环主窗口事件


if __name__ == '__main__':
    bc = BC()
    bc.run()

部分代码简述

 def set_entry(self, var, row, column, sticky=E + W):
    	''' 设置界面里的输入框组件 '''
        en = Entry(
            self,
            border=1,
            font=('微软雅黑', 10, 'bold'),
            textvariable=var,
            justify='center',
        )
        en.grid(row=row, column=column, sticky=sticky)
        en.bind("<Button-1>", lambda e: var.set('')) #绑定鼠标事件 效果捕获到输入框里光标时
                                                                               #清空输入里的内容 实际效果如下图

使用Python Tkinter库打造简陋股票补仓计算器桌面应用 - 天天要闻

捕获光标清空内容


打包成EXE桌面应用程序(Win系统)

1.找到代码所在的目录

使用Python Tkinter库打造简陋股票补仓计算器桌面应用 - 天天要闻

1.1

2.在终端打开PY文件

使用Python Tkinter库打造简陋股票补仓计算器桌面应用 - 天天要闻

3.在打开的终端输入打包命令:pyinstaller -F 要打包的.PY文件名称(PS:pyinstaller库具体使用可以查阅官方文档https://www.pyinstaller.org/百度,AI工具皆可)

使用Python Tkinter库打造简陋股票补仓计算器桌面应用 - 天天要闻

Pyinstaller -F -w BC.py Pyinstaller -F -w BC.py

4.回车执行打包命令,等待打包命令跑完后就会在PY文件的目录中生成2个文件夹 ,打包好的EXE运用程序就存放在dist文件夹里

使用Python Tkinter库打造简陋股票补仓计算器桌面应用 - 天天要闻


结语

至此,一个简陋的“股票补仓计算器”已经初具雏形,感兴趣的朋友可以自行在这个代码的基础上优化.

(END)

科技分类资讯推荐

发布不到2个月,小米玄戒,已拿下安卓手机芯片0.6%的份额 - 天天要闻

发布不到2个月,小米玄戒,已拿下安卓手机芯片0.6%的份额

前段时间,小米发布了玄戒O1芯片,这也是中国大陆首款3nm的手机芯片。虽然这颗芯片被人黑的不要不要的,但说真的,它的表现还是相当不错的,据大家的评测,他的性能是比高通骁龙8Gen3还要强的,只是没有基带芯片,需要外挂基带才行。
电压互感器谐振 - 天天要闻

电压互感器谐振

电压互感器谐振。电压互感器谐振,在过去的几个月里我们收到了几个不同的问题,关于什么是VT电路中的铁磁谐振,它何时发生以及我们如何防止它发生。当电压互感器的初级在未接地电路中与地线相连时就会发生铁磁谐振,这种配置导致VT的磁化电抗与系统接地的
中国高铁营业里程已占世界七成以上,未来将围绕多个领域持续攻关 - 天天要闻

中国高铁营业里程已占世界七成以上,未来将围绕多个领域持续攻关

7月8日上午,第十二届世界高速铁路大会在北京开幕,这也是继2010年第七届世界高速铁路大会在北京举办后,该项世界性大会再次来到北京。1825年,世界上第一条铁路在英国诞生,而今年正好是世界铁路诞生200周年。 世界高速铁路大会由国际铁路联盟(UIC)于1992年发起并主办,每2至3年举办一届,至今已成功举办十一届,成为展...
淘宝闪购日订单超8000万,3724个非餐饮品牌订单翻倍增长,光明增长558% - 天天要闻

淘宝闪购日订单超8000万,3724个非餐饮品牌订单翻倍增长,光明增长558%

7月8日,淘宝闪购、饿了么联合宣布,淘宝闪购日订单数超8000万,其中非餐饮订单超1300万,淘宝闪购日活跃用户超2亿。最新数据显示,有3724个非餐饮品牌订单数对比淘宝闪购上线之初增长了100%以上,食品、母婴、个护、家电、酒类、3C数码等品类订单也增长超过100%。淘宝闪购7月2日启动500亿补贴计划,社会消费热情被极大点燃...
脑机接口新进展,将如何改变我们的生活? - 天天要闻

脑机接口新进展,将如何改变我们的生活?

大家有没有想过,未来有一天我们不用说话,只用大脑就能和外界交流;不用动手,仅凭意念就能操控各种设备。这可不是科幻电影里的情节,随着脑机接口技术的不断发展,这些场景正一步步走向现实。脑机接口,简单来说,就是在大脑和外部设备之间建立直接的连接通
谷歌 Pixel 10 系列 4 款机型颜色和存储阵容曝光 - 天天要闻

谷歌 Pixel 10 系列 4 款机型颜色和存储阵容曝光

IT之家 7 月 8 日消息,科技媒体 Droid-life 昨日(7 月 7 日)发布博文,报道称从分销商处获悉,谷歌 Pixel 10 系列手机将从 128GB 存储起步,并透露了颜色和存储阵容。IT之家援引博文介绍,附上谷歌 Pixel 10 系列四款机型的存储和颜色阵容如下:Pixel 10:曜石黑(Obsidian):128G / 256GB霜(F
罗马仕一充电宝突然爆炸:不是召回型号 - 天天要闻

罗马仕一充电宝突然爆炸:不是召回型号

7月8日,据媒体报道,昨日有网友发布一段办公室监控视频称,其同事去年买的罗马仕充电宝在办公室充电时又爆炸了,并且还不是召回型号。 据此前报道,罗马仕于6月16日宣布,召回2023年6月5日....
vivo Y04e配置曝光:天玑T612处理器+5500mAh电池 - 天天要闻

vivo Y04e配置曝光:天玑T612处理器+5500mAh电池

【CNMO科技消息】近日,有外媒报道,还未发布的vivo Y04e的身影出现在Google Play控制台的数据库中,一同出现的还有Y04e的性能信息。vivo Y04e根据Google Play控制台披露的信息,vivo Y04e搭载了紫