练手级计算机,快来打怪

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了练手级计算机,快来打怪相关的知识,希望对你有一定的参考价值。

<兄弟连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

>

以上是关于练手级计算机,快来打怪的主要内容,如果未能解决你的问题,请参考以下文章

Java并发编程面试题(五万字总结)——快来打怪升级吧

安卓+IOS4月24日首发《全民来打怪BT》《女神纪元(满V版)《头号大玩家BT版》《挂机吧军师BT版《梦幻悟空传(满V版)

微软Tech Summit 2017,等你来打Call

Cg入门16:Fragment shader - 片段级光照

CNNA学习 基础级IP地址子网划分

Python 练手级项目-----用 Python 写个贪吃蛇,保姆级教程!