练手级计算机,快来打怪

<兄弟连Python06前期计算器————知识点

import tkinter

class jsq:
    #界面布局方法
    def __init__(self):
        self.root=tkinter.Tk()
        self.root.minsize(300,450)
        self.root.maxsize(300,450)
        self.root.title(‘计算器‘)
        #全局化变量
        #存储数字与符号变量
        self.lists=[]
        #假定按下符号键为错
        self.isPressSign=False

        #初始化界面数字为0
        self.res = tkinter.StringVar()
        self.res.set(0)
        #将运算过成输入到第一行中去包括符号案件(
        self.res2=tkinter.StringVar()

        #界面布局
        self. xsmb()
        self.caidan()
        self.root.mainloop()

    def caidan (self):

        # 创建总菜单
        menubar =tkinter.Menu(self.root)
        # 创建一个下拉菜单,并且加入文件菜单
        filemenu = tkinter.Menu(menubar)
        # 创建查看菜单的选项
        filemenu.add_command(label="打开", command=self.caidan)
        filemenu.add_command(label="存储", command=self.caidan)
        # 创建下拉菜单的分割线
        filemenu.add_separator()
        filemenu.add_command(label="关闭", command=self.root.quit)
        # 将文件菜单作为下拉菜单添加到总菜单中,并且将命名为File
        menubar.add_cascade(label="菜单", menu=filemenu)
        # 创建编辑菜单
        editmenu = tkinter.Menu(menubar, tearoff=0)
        # 创建编辑菜单选项
        editmenu.add_command(label=‘复制(C)‘, command=self.caidan)
        editmenu.add_command(label=‘粘贴(P)‘, command=self.caidan)
        menubar.add_cascade(label="编辑", menu=editmenu)
        # 显示总菜单
        self.root.config(menu=menubar)
    #按下数字的操作数字方法
    def szbtn(self,num):

        #按下符号键输出0
        if self.isPressSign==False:

            pass
        else:
            self.res.set(0)

            #重新赋值按下符号键为假
            self.isPressSign=False
        #赋值输入的数字为oldnum
        oldnum=self.res.get()
        #判断初始数字数否为0,是输出输入数字,不是将本次数字添加到新数字中输出
        if oldnum==‘0‘:
            self.res.set(num)
        else:
            newnum=oldnum+num
            self.res.set(newnum)

    #按下符号键操作方法
    def pressCompute(self,sign):

        #将输入的数字和数入的符号都存到列表中
        num = self.res.get()

        self.lists.append(num)
        self.lists.append(sign)
        #后退键功能
        if sign==‘<--‘:
            l=num[0:-1]
            self.res.set(l)

        #判断输入字符是否为清除键
        if sign==‘c‘:
            self.lists.clear()
            self.res.set(0)
        #if sign==‘√‘:
            #self.res.set(math.sqrt(num))

        #重置按键为真
        self.isPressSign=True

    #输出运算结果
    def pressEqual(self):

        #将按下运算符在次按下的数字添加到列表中
        curnum = self.res.get()

        self.lists.append(curnum)
        #按下等号触发已保存字符运算
        computeStr=‘‘.join(self.lists)
        endnum=eval(computeStr)
        #运算结束后将储存的运算过程输出到第一个文本框
        self.res2.set(computeStr)
        #输出结果清出列表
        self.res.set(endnum)
        self.lists.clear()

    #布局界面文本框和按键方法
    def xsmb(self):
        lable=tkinter.Label(self.root,textvariable=self.res,bg=‘white‘,font=(‘黑体‘,20),anchor=‘e‘)
        lable.place(x=20,y=20,width=260,height=60)

        lable2=tkinter.Label(self.root,textvariable=self.res2,bg=‘blue‘,font=(‘宋体‘,10),anchor=‘e‘)
        lable2.place(x=20,y=20,width=260,height=20)

        #第一行符号键
        btnyichu=tkinter.Button(self.root,text=‘<--‘,font=(‘黑体‘,20),command=lambda :self.pressCompute(‘<--‘))
        btnyichu.place(x=20,y=100,width=95,height=40)

        btnclear=tkinter.Button(self.root,text=‘c‘,font=(‘黑体‘,20),command=lambda :self.pressCompute(‘c‘))
        btnclear.place(x=130,y=100,width=40,height=40)

        #btnsqrt = tkinter.Button(self.root, text=‘√‘, font=(‘黑体‘, 20), command=lambda: self.pressCompute(‘√‘))
        #btnsqrt.place(x=185, y=100, width=40, height=40)

        btnmiyunsuan=tkinter.Button(self.root,text=‘**‘,font=(‘黑体‘,20),command=lambda :self.pressCompute(‘**‘))
        btnmiyunsuan.place(x=240,y=100,width=40,height=40)
        #第一行数字键
        btn1=tkinter.Button(self.root,text=‘1‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘1‘))
        btn1.place(x=20,y=160,width=40,height=40)

        btn2=tkinter.Button(self.root,text=‘2‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘2‘))
        btn2.place(x=75,y=160,width=40,height=40)

        btn3=tkinter.Button(self.root,text=‘3‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘3‘))
        btn3.place(x=130,y=160,width=40,height=40)
        #第二行符号键,除法和地板除
        btnchu=tkinter.Button(self.root,text=‘/‘,font=(‘黑体‘,20),command=lambda :self.pressCompute(‘/‘))
        btnchu.place(x=185,y=160,width=40,height=40)

        btndibanchu=tkinter.Button(self.root,text=‘//‘,font=(‘黑体‘,20),command=lambda :self.pressCompute(‘//‘))
        btndibanchu.place(x=240,y=160,width=40,height=40)
        #第二行数字键
        btn4=tkinter.Button(self.root,text=‘4‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘4‘))
        btn4.place(x=20,y=220,width=40,height=40)

        btn5=tkinter.Button(self.root,text=‘5‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘5‘))
        btn5.place(x=75,y=220,width=40,height=40)

        btn6=tkinter.Button(self.root,text=‘6‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘6‘))
        btn6.place(x=130,y=220,width=40,height=40)
        #第三行符号,乘法,取于运算
        btncheng=tkinter.Button(self.root,text=‘*‘,font=(‘黑体‘,20),command=lambda :self.pressCompute(‘*‘))
        btncheng.place(x=185,y=220,width=40,height=40)

        btnquyu=tkinter.Button(self.root,text=‘%‘,font=(‘黑体‘,20),command=lambda :self.pressCompute(‘%‘))
        btnquyu.place(x=240,y=220,width=40,height=40)

        btn7=tkinter.Button(self.root,text=‘7‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘7‘))
        btn7.place(x=20,y=280,width=40,height=40)

        btn8=tkinter.Button(self.root,text=‘8‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘8‘))
        btn8.place(x=75,y=280,width=40,height=40)

        btn9=tkinter.Button(self.root,text=‘9‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘9‘))
        btn9.place(x=130,y=280,width=40,height=40)

        btnjian=tkinter.Button(self.root,text=‘-‘,font=(‘黑体‘,20),command=lambda :self.pressCompute(‘-‘))
        btnjian.place(x=185,y=280,width=40,height=40)

        btn0=tkinter.Button(self.root,text=‘0‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘0‘))
        btn0.place(x=20,y=340,width=95,height=40)

        btndian=tkinter.Button(self.root,text=‘.‘,font=(‘黑体‘,20),command=lambda :self.szbtn(‘.‘))
        btndian.place(x=130,y=340,width=40,height=40)

        btnjia=tkinter.Button(self.root,text=‘+‘,font=(‘黑体‘,20),command=lambda :self.pressCompute(‘+‘))
        btnjia.place(x=185,y=340,width=40,height=40)

        btndeng=tkinter.Button(self.root,text=‘=‘,font=(‘黑体‘,20),command=lambda :self.pressEqual())
        btndeng.place(x=240,y=280,width=40,height=100)

jsq()

没学多久Python,没有各位大神趟的水多。计算机弄了一两天,做的比较糙。菜单基本是废了/(ㄒoㄒ)/~~。。。。。。函数部分本来还要有个开平方,实在没做出来还望看到的大神指点一下。

逻辑基本是按照输入数字——输入运算符——输入数字——‘=’号运算结果。

目前还有多处bug:已知1运算结束后输出结果在输入数字是直接添加到结果上的。

           2多次按下等号键只能运算一次不能直接用等号直接进行多次运算。

           3第一排记录的文本框不是从开始输入就上传另运算结束不能按键清楚用户体验较差

           。。。。。

由于还有较多功能未实现,操作不佳还望见谅

python学习资源分享群:563626388 QQ

>

时间: 2024-08-04 10:54:57

练手级计算机,快来打怪的相关文章

程序员练手项目

转自:http://mp.weixin.qq.com/s?__biz=MzA4OTE4MjIwMA==&mid=2666146030&idx=1&sn=765c206ffcb28822674376985cdf9393&scene=23&srcid=0801NjfvdJozzoHkpC1BGnN4#rd 我经常看有人发帖问关于项目点子的事,也看到了很多回帖,我自己也回了一些常见的项目.不过我觉得只列出三两个是远远不够的,因此就收集并这个项目列表,大家要找简单的编程项目

Google的量子计算之梦:比传统计算机快上1亿倍?

Google的量子计算之梦:比传统计算机快上1亿倍? 本文来自technologyreview,作者 Tom Simonite ,机器之心编译出品,参与:salmoner,薛矽,汪汪,微胖. 近日,谷歌宣布他们的量子计算机比传统计算机快上1亿倍,有人欢呼雀跃,有人提出质疑.让我们来看看背后的故事吧,看看物理学家John Martinis 如何帮谷歌实现炙手可热的量子计算之梦.他或许正手握着量子计算的圣杯,本文选自麻省理工科技评论. Martini团队追寻的神奇计算机 John Martinis用

前端练手项目

前端学习还是很有趣的,可以较快的上手然后自己开发一些好玩的项目来练手,网上也可以一抓一大把关于前端开发的小项目,可是还是有新手在学习的时候不知道可以做什么,以及怎么做,因此,就整理了一些前端项目教程,希望可以帮助正在学习前端的小伙伴.为了方便阅读,大概把前端可以做的项目分为三类: 游戏类 实用类 好玩类 然后依次推荐一些项目教程,想要学习的小伙伴可以看看~ 游戏类 其实很多常见的小游戏都是纯前端开发出来的,比如曾经风靡的2048.别踩白块啊等等,简单有趣,对于初学者来说,这些小游戏是非常不错的练

webpack练手项目:easySlide(一)

最近在学习webpack,正好拿了之前做的一个小组件,图片轮播来做了下练手,让我们一起来初步感受下webpack的神奇魅力.     webpack是一个前端的打包管理工具,大家可以前往:http://webpack.github.io/ 作详细了解.相对于之前的前端模块打包工具, 个人认为webpack至少拥有以下值得我们拿来一用的优点: js/css/img/html等等都是静态资源,都可以通过webpack进行打包处理 所有资源都可以按需加载,避免了之前的加载器把所有资源打包在一个文件,导

体系结构复习5——仓库级计算机的并行

体系结构复习 CH8 仓库级计算机的并行 注:本章不做重点要求,简略复习 8.1 仓库级计算机 8.1.1 仓库级计算机WSC 一般把作为商用因特网基础的超大型规模的集群称做仓库级计算机(WSC),WSC的建设主要关心: 成本和性能 能耗效率 可靠性(冗余备份) 网络I/O 工作负载平衡 并?性 运?成本 规模 计算WSC的可靠性(通过软件冗余来屏蔽停用次数): availability =全年宕机时间全年时间=软件故障次数×软件系统重启时间+硬件故障次数×硬件系统修复时间全年时间 8.1.2

Java制作最难练手速游戏,Faker都坚持不了一分钟

想练手速,来啊,互相伤害啊 Java制作最难练手速游戏,目测Faker也坚持不了一分钟 制作思路:只靠Java实现.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java. 字母模型应该是整个游戏的主角,因为整个游戏过程中都涉及到它的运动,比如坠落,消失,产生等,首先应该考虑字母随即出现的位置,在游戏中不断下落,计算下落的高

java 水题练手汇总

最近学java,会陆续找点水题练手. 题目链接 1 import java.util.*; 2 import java.awt.*; 3 import java.math.*; 4 5 public class Main { 6 7 public static void main(String args[]) { 8 Scanner cin=new Scanner(System.in); 9 int n, i; 10 int f[] = new int[35]; 11 f[0] = 0; 12

KMP算法的定义及KMP练手题 HDU 1711 Number Sequence (我的模板代码)

题意:就是要你来找出b数组在a数组中最先匹配的位置,如果没有则输出-1 思路:直接KMP算法(算法具体思想这位牛写的不错http://blog.csdn.net/v_july_v/article/details/7041827) AC代码: #include<cstdio> #include<cstring> #include<stdlib.h> #include<iostream> using namespace std; #define maxn 100

练手小游戏(代码篇之逻辑杂篇

其实呢,我这游戏就有一个简单的AI框架,其他的呢我就一起走了吧,写的还是挺乱的. 比较重要的就是玩家控制类PlayerController~~~ 这里其实我把几个模块都写在一起了,比如输入控制(InputController),动画控制(AnimatorController),还有角色控制 因为就是一个练手的,不用把各个平台的输入信息都整合了,所以InputController就不写了. 我感觉动画控制和角色控制的分界线很微妙,所以也就写一起了~ 走代码备注很全 //人物控制脚本 public