计算器

简介: import tkinter as tkfrom tkinter import ttkimport pandas as pdfrom prettytable import PrettyTable'''号码投注方案计算器'''# 程序界面class AppWindow(tk.
import tkinter as tk
from tkinter import ttk

import pandas as pd
from prettytable import PrettyTable

'''号码投注方案计算器'''

# 程序界面
class AppWindow(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.grid(row=0, column=0, sticky="nsew")
        self.setupUI()

    def setupUI(self):
        leftwidth = 5
        rightwidth = 15
        
        
        mainframe = tk.Frame(self)
        mainframe.pack(fill="x")
        
        # 第一行:特码毛赔率
        rowframe1 = tk.Frame(mainframe)
        rowframe1.pack(fill="x", ipadx=3, ipady=3)

        self.peilv = tk.DoubleVar()
        self.peilv.set(42)
        tk.Entry(rowframe1, textvariable=self.peilv).pack(side=tk.RIGHT)
        
        tk.Label(rowframe1, text="赔率").pack(side=tk.RIGHT)

        
        # 第二行:起始倍数
        rowframe2 = tk.Frame(mainframe)
        rowframe2.pack(fill="x", ipadx=3, ipady=3)
        
        self.start_beishu = tk.IntVar()
        self.start_beishu.set(1)
        tk.Entry(rowframe2, textvariable=self.start_beishu).pack(side=tk.RIGHT)
        
        tk.Label(rowframe2, text="起始倍数").pack(side=tk.RIGHT)
        
        # 第三行:注数
        rowframe3 = tk.Frame(mainframe)
        rowframe3.pack(fill="x", ipadx=3, ipady=3)
        
        self.zhushu = tk.IntVar()
        self.zhushu.set(10)
        tk.Entry(rowframe3, textvariable=self.zhushu).pack(side=tk.RIGHT)
        
        tk.Label(rowframe3, text="注数").pack(side=tk.RIGHT)
        
        # 第四行:最小收益率
        rowframe4 = tk.Frame(mainframe)
        rowframe4.pack(fill="x", ipadx=3, ipady=3)
        
        self.min_shouyilv = tk.DoubleVar()
        self.min_shouyilv.set(0.5)
        tk.Entry(rowframe4, textvariable=self.min_shouyilv).pack(side=tk.RIGHT)
        
        tk.Label(rowframe4, text="最小收益率").pack(side=tk.RIGHT)
        
        
        # 第五行:按钮
        rowframe5 = tk.Frame(mainframe)
        rowframe5.pack(fill="x", ipadx=3, ipady=3)
        ttk.Button(rowframe5, text='确定', command=self.calc).pack(side=tk.RIGHT)
        
    def calc_a_row(self, index, last_beishu, last_cumsumtouru):
        '''根据上期倍数、上期累计投入,计算本期'''
        zhushu, peilv, min_shouyilv = self.zhushu.get(), self.peilv.get(), self.min_shouyilv.get()
        bs = last_beishu
        while True:
            cumsumtouru = last_cumsumtouru + bs * zhushu # 累计投入
            cumsumshouyi = bs * peilv - cumsumtouru # 累计收益
            if cumsumshouyi/cumsumtouru < min_shouyilv:
                bs += 1
            else:
                break
        # ['期数','倍数','注数','本期投入','累计投入','本期收益','累计收益','累计收益率']
        return [index+1, bs, zhushu, bs*zhushu, cumsumtouru, round(bs*peilv, 2), round(cumsumshouyi, 2), round(cumsumshouyi/cumsumtouru, 4)]
        
    def calc_n_row(self, n=10):
        '''计算n期'''
        res = []
        for i in range(n):
            if i == 0: 
                res.append(self.calc_a_row(i, self.start_beishu.get(), 0))
            elif i > 0:
                res.append(self.calc_a_row(i, res[-1][1], res[-1][4]))
        return res
    
    def calc(self):
        '''倍投计算(用prettytable显示结果)'''
        n = 10
        res = self.calc_n_row(n)
        
        table = PrettyTable(['期数','倍数','注数','本期投入','累计投入','本期收益','累计收益','累计收益率'])
        for i in range(n):
            table.add_row(res[i])
        print(table)
        
    def calc2(self):
        '''倍投计算(用pandas显示结果)'''
        n = 10
        res = self.calc_n_row(n)
        
        df = pd.DataFrame(res, columns=['期数','倍数','注数','本期投入','累计投入','本期收益','累计收益','累计收益率'])
        print(df)
    
def main():
    root = tk.Tk()
    root.columnconfigure(0, weight=1)
    root.rowconfigure(0, weight=1) # Grid管理器允许通过几个方法来控制组件在容器中的位置。weight选项指出一个行或列的相对缩放比例,针对一个行,如果将weight设为3,那么他将以三倍于weight值为1的比例伸展。默认值是0,表明当用户改变窗口大小时,单元格的大小保持不变。
    #root.geometry('640x360')  # 主窗口大小
    root.resizable(width=False, height=False) # 禁止改变大小
    root.title("计算器")

    app = AppWindow(root)
    app.mainloop()


if __name__ == "__main__":
    main()
    pass
目录
相关文章
|
6月前
计算器V2
编写了一个简单的程序,实现了浮点数的加、减、乘、除和幂运算。程序包括了对浮点数的计算,并展示了运算结果。其中,幂运算需包含&quot;math.h&quot;头文件。
43 0
|
6月前
计算器V1
创建一个简单的计算器程序,能执行整数的加、减、乘、除和求余运算。用户输入格式为:操作数1 运算符op 操作数2。遇到除数为0时,输出&quot;Division by zero!&quot;;运算符非法则输出&quot;Invalid operator!&quot;。示例输入和输出已给出。
55 0
|
6月前
|
前端开发 JavaScript
使用html+css+javaScript 完成计算器
使用html+css+javaScript 完成计算器
|
6月前
leetcode-224:基本计算器
leetcode-224:基本计算器
32 0
|
11月前
|
Java
计算器的模拟实现
计算器的模拟实现
84 0
一个计算器器脚本
一个计算器器脚本
71 1
C++ 计算器实现加减乘除
C++ 计算器实现加减乘除
110 0
|
算法
lougu 2485计算器(BSGS)
lougu 2485计算器(BSGS)
130 0
|
前端开发
一个很简易的计算器
一个很简易的计算器
110 0
一个很简易的计算器