使用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)

科技分類資訊推薦

iPhone一鍵降溫?蘋果這隱藏模式有點過分啊 - 天天要聞

iPhone一鍵降溫?蘋果這隱藏模式有點過分啊

為了解決發熱這亘古難題,手機廠商絞盡腦汁,往手機里塞散熱膜、均熱板、填充硅脂,甚至還用上了主動風扇。 但到了夏天三四十度的室外,該發熱還是發熱,該燙手還是燙手。 國產安卓如此。 ....
三星Galaxy S26Ultra不裝了,性能太炸裂了! - 天天要聞

三星Galaxy S26Ultra不裝了,性能太炸裂了!

三星Galaxy S26 Ultra即將亮相,帶來多方面升級。·該機型將採用6.9英寸QHD+LTPO AMOLED顯示屏,支持120Hz自適應刷新率和3000尼特峰值亮度,確保在各種光照條件下都能提供清晰的視覺體驗。
中集洋山集裝箱第三季度訂單飽滿 開拓氫能集成裝備求新|公司調研 - 天天要聞

中集洋山集裝箱第三季度訂單飽滿 開拓氫能集成裝備求新|公司調研

財聯社7月5日訊(記者 胡皓瓊)中美關稅緩和之下,外貿企業對美出貨恢復,帶動中集洋山集裝箱製造訂單增長。集裝箱製造廠在提升自動化水平的同時,為提高自身抗風險能力,還正布局新賽道。財聯社記者近日走訪中集集團(000039.SZ)旗下中集洋山,眼見一片片鋼板,經歷衝壓、焊接組裝、打砂等一道道工序,逐漸成形。產線上布...
數據寶一體機實機首秀2025生態文明貴陽國際論壇 - 天天要聞

數據寶一體機實機首秀2025生態文明貴陽國際論壇

7月5日至6日,2025年生態文明貴陽國際論壇召開,數據寶攜其AI技術領先成果重磅亮相論壇人工智能展區,並以「企業私域業務模型一體機」實機首秀,現場演繹數據資產與AI深度賦能綠色發展的創新融合實踐。數據寶「企業私域業務模型一體機」。
登上C909樣機,聽聽中國商飛工程總師怎麼說?《明青講習所》又上新了 - 天天要聞

登上C909樣機,聽聽中國商飛工程總師怎麼說?《明青講習所》又上新了

名師金課《明青講習所》今又上新,這期節目《「科學家精神」的迴響》聚焦於「科學家精神的時代傳承」,定於7月5日(周六)19:30 在上海教育電視台首播。陳明青老師帶領華東師範大學第一附屬中學、上海市魯迅中學、上海南湖職業技術學院的學生們,踏上沉浸式學習之旅,走進錢學森圖書館、中國商飛上海飛機設計研究院、上海科...