Python tkinter计算器

Python版本:3.7
By : zeis

最近在学Python,一开始是看Python教程 - 廖雪峰的官方网站,但是看到“面对对象高级编程”那边就没耐心看了,不过网站还是很不错的。后来把《简明Python教程》(原著叫《A Byte of Python》)看完了,这个教程我感觉还是很不错,适合我这样没耐心的人看。
又了解了图形界面后,就想着做个简单的计算器,为此找了好多资料,可能是我太笨了吧,emmmmm…
现在计算器算是完成一部分了,所以我就打算写个笔记记录一下,也是为了让其他跟我一样的人不用再去找好多资料,只看我这个就可以。

tkinter

tkinter是Python自带的标准GUI(图形用户界面)包,使用它不需要再安装其他的东西,直接使用即可。

程序部分

1

from tkinter import *
from tkinter import messagebox
import operator

程序的第一部分当然是import啦,第一行是导入tkinter包的“所有”内容,第二行是导入tkinter 包的messagebox模块,messagebox模块是用来做弹窗的,第三行operator包在本次程序中是用来实现对比两个列表是否相等,其他功能这里不讲。
要注意的是其实第一行这样导入并不会真正导入tkinter 包的所有内容,messagebox就是没有导入的部分之一,所以还需要第二行。
这是我找到的解释:

包导入的过程和模块的基本一致,只是导入包的时候会执行此包目录下的__init__.py,而不是模块里面的语句了。另外,如果只是单纯的导入包,而包的__init__.py中又没有明确的其他初始化操作,那么此包下面的模块是不会自动导入的。

2

lists = []                            #设置一个变量 保存运算数字和符号的列表
class Application(Frame):
    def __init__(self,master = None):
        Frame.__init__(self, master)
        self.master.geometry('320x450')
	    self.master.resizable(0, 0)  	# 阻止Python GUI的大小调整
        self.createWidgets()

首先这里定义了一个列表lists ,用来保存输入内容。
在GUI中,每个Button、Label、输入框等,都是一个Widget(控件)。在tkinter中用Frame表示窗口,Frame也是一个Widget,Frame可以容纳其它Widget。本程序中从Frame类派生出Application类,来容纳各种Widget。
Application类的构造函数 __init__(self,master=None)有两个参数,self代表Application本身,(在tkinter中,一个Widget可能属于另一个Widget,这时的另一个Widget就是这个控件的master)而窗口没有master,所以在这里master=None
geometry('320x450')表示将窗口大小设为“320*450”大小,self.createWidgets()是创建Widgets的方法,具体在后面。
resizable(0, 0)表示不允许调节窗口大小,将参数设为1则表示允许调节。

3

	def createWidgets(self):
		 #增加菜单
        self.menuBar = Menu(self.master)				#创建菜单的实例
        self.master.config(menu = self.menuBar)	#将根窗口的顶级菜单设置为menu
		#设置菜单选项
		#创建一个下拉菜单‘关于’,这个菜单是挂在menubar(顶级菜单)上的
		#tearoff的值有0和1,为0时表示子菜单不独立出来。
        aboutMenu=Menu(self.menuBar,tearoff=0)
        #创建一个下拉菜单‘功能’,这个菜单是挂在menubar(顶级菜单)上的
        moreMenu=Menu(self.menuBar,tearoff=0)
        #用add_cascade()将菜单添加到顶级菜单中,按添加顺序排列
        self.menuBar.add_cascade(label='功能',menu=moreMenu)
        self.menuBar.add_cascade(label='帮助',menu=aboutMenu)
        #下拉菜单的具体项目,使用add_command()方法
        aboutMenu.add_command(label='关于',command=self.About)
        moreMenu.add_command(label='其他',command=self.Other)
        
		# 显示面板
        self.result = StringVar()
        self.result.set(0)  				# 显示面板显示结果1,用于显示默认数字0
        self.result2 = StringVar()  	# 显示面板显示结果2,用于显示计算过程
        self.result2.set('')
        # 显示面板设置
        self.label = Label(self.master, font=('微软雅黑', 20), bg='#FFFFFF', bd='0', fg='#828282', anchor='se',\
                                  textvariable=self.result2)
        self.label.place(width=320, height=130)
        self.label2 = Label(self.master, font=('微软雅黑', 25), bg='#FFFFFF', bd='0', fg='black', anchor='se',\
                                   textvariable=self.result)
        self.label2.place(y=130, width=320, height=70)

        ######################数字键###########################
        self.Button1 = Button(self.master, text='7', font=('微软雅黑', 20), fg=('#4F4F4F'), bg=('#FFFFF0'), bd=0,\
                              command=lambda: self.pressNum('7'))
        self.Button1.place(x=0, y=250, width=80, height=50)
        self.Button2 = Button(self.master, text='8', font=('微软雅黑', 20), fg=('#4F4F4F'), bg=('#FFFFF0'), bd=0<
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值