博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算器
阅读量:6232 次
发布时间:2019-06-21

本文共 3870 字,大约阅读时间需要 12 分钟。

import tkinter as tkfrom tkinter import ttkimport pandas as pdfrom 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

转载地址:http://kuana.baihongyu.com/

你可能感兴趣的文章
npm使用入门(package.json)
查看>>
You are beautiful
查看>>
inline和宏之间的区别
查看>>
hibernate篇章五--Hibernage工作原理
查看>>
MongodDB学习笔记(二)(复制)
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
Java中1.0 / 0.0 会输出什么?
查看>>
linux性能剖析工具
查看>>
DP ZOJ 3872 Beauty of Array
查看>>
jQuery Ajax实例 ($.ajax_$.post_$.get)
查看>>
垃圾桶丁
查看>>
HDU 4757 可持久化trie树
查看>>
spring-boot入门
查看>>
USB HID 分析
查看>>
驱动属性
查看>>
IOS 学习笔记(6) 控件 文本域(UITextField)的使用方法
查看>>
第一次写JQuery插件--用于显示子菜单
查看>>
Java的几种对象(PO,VO,DAO,BO,POJO)解释
查看>>
Quartz总结(一):Quartz集成Spring的2个方法
查看>>
读取文件,输出单词
查看>>