1、实验10简单计算器实验十 简单计算器【实验名称】 简单计算器【实验目的】 1、了解常用的GUI;2、熟悉tkinter布局方法;3、熟悉tkinter API使用;4、编写简单的GUI程序【实验要求】 1、Tkinter模块函数使用;2、熟悉tkinter布局方法;3、tkinter事件和信号连接【背景描述】 本节将对图形用户界面(Graphical User Interface,GUI)编程进行简要的介绍。无论你刚接解本领域,还是希望学到更多相关知识,亦或是想要看到Python 中是如何实现的,本章都会正合你意。这短短的一章不可能展示所有GUI 应用开发的东西,但是会为你奠定一个坚实的基础。
2、我们将主要使用的GUI 工具包是Python 默认的GUI 库Tk,通过Python 的接口Tkinter(“Tk interface”的缩写)可以访问Tk。Tk 并不是最新和最好的,也没有包含最强大的GUI 构建模块集,但是它足够易用,你可以使用它构建能够运行在大多数平台下的GUI。【知识准备】 掌握和熟悉Python基本语法,常见数据类和操作,会用pdb调试Python程序。 【实验设备】 Windows或Linux或Mac OS的操作系统的计算机。本实验提供win7系统。【实验说明】 为了开发方便,本人用IDLE做为实验教学和模拟环境,不再在CMD下操作。 最好有点GUI程序知识。【实验
3、环境】 系统:Windows 7 64位 旗舰版,Python 版本: Python 3.5.3开发工具: IDLE集成开发环境。【实验步骤】在windows 7 64位 旗舰版安装python3,并执行命令和脚本。第一步: 认识tkinter程序结构那么为了让tkinter 成为应用的一部分,你需要做些什么呢?首先,已经存在的应用并不是必需的。如果你愿意,可以创建一个纯GUI 程序,不过没有让人感兴趣的底层功能的程序不会有什么用处。让GUI 程序启动和运行起来需要以下5 个主要步骤。1导入tkinter 模块(或from tkinter import *)。2创建一个顶层窗口对象,用于容纳整
4、个GUI 应用。3在顶层窗口对象之上(或者“其中”)构建所有的GUI 组件(及其功能)。4通过底层的应用代码将这些GUI 组件连接起来。5进入主事件循环。第二步:使用tkinter.Tk() 生成主窗口(root=tkinter.Tk())root.title(标题名) 修改框体的名字,也可在创建时使用className参数来命名;root.resizable(0,0) 框体大小可调性,分别表示x,y方向的可变性;root.geometry(250x150)指定主框体大小;root.quit() 退出;root.update_idletasks()root.update() 刷新页面;初级样例
5、:import tkinterroot=tkinter.Tk() #生成root主窗口label=tkinter.Label(root,text=Hello,GUI) #生成标签label.pack() #将标签添加到主窗口button1=tkinter.Button(root,text=Button1) #生成button1button1.pack(side=tkinter.LEFT) #将button1添加到root主窗口button2=tkinter.Button(root,text=Button2)button2.pack(side=tkinter.RIGHT)root.mainloo
6、p() #进入消息循环(必需组件)第三步:tkinter中的15种核心组件Button 按钮; Canvas 绘图形组件,可以在其中绘制图形; Checkbutton 复选框; Entry 文本框(单行); Text 文本框(多行); Frame 框架,将几个组件组成一组 Label 标签,可以显示文字或图片; Listbox 列表框; Menu 菜单; Menubutton 它的功能完全可以使用Menu替代; Message 与Label组件类似,但是可以根据自身大小将文本换行; Radiobutton 单选框; Scale 滑块;允许通过滑块来设置一数字值 Scrollbar 滚动条;配合
7、使用canvas, entry, listbox, and text窗口部件的标准滚动条; Toplevel 用来创建子窗口窗口组件。(在Tkinter中窗口部件类没有分级;所有的窗口部件类在树中都是兄弟。)实例如下:# -*- coding: UTF-8 -*-from tkinter import * # 导入 Tkinter 库root = Tk() # 创建窗口对象的背景色 # 创建两个列表li = C,python,php,html,SQL,javamovie = CSS,jQuery,Bootstraplistb = Listbox(root) # 创建两个列表组件listb2 =
8、 Listbox(root)for item in li: # 第一个小部件插入数据 listb.insert(0,item)for item in movie: # 第二个小部件插入数据 listb2.insert(0,item)listb.pack() # 将小部件放置到主窗口中listb2.pack()root.mainloop() # 进入消息循环第四步:控件标准属性标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。 属性描述Dimension控件大小;Color控件颜色;Font控件字体;Anchor锚点;Relief控件样式;Bitmap位图;Cursor光标;实例如下im
9、port tkinter as tk window = tk.Tk()window.title(test)window.geometry(400x400) #设置主界面大小btn1 = tk.Button(window,text=one,width=5,bg=green) #设置button属性btn1.pack()btn2 = tk.Button(window,text=two,width=5,height=5,bg=red) #设置button属性btn2.pack()btn3 = tk.Button(window,text=three,width=3,height=3,bg=blue)
10、#设置button属性btn3.pack()btn4 = tk.Button(window,text=four,width=15,height=10,bg=yellow) #设置button属性btn4.pack()window.mainloop()第五步:几何管理Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,一下是Tkinter公开的几何管理类:包、网格、位置几何方法描述pack()包装;grid()网格;place()位置;实例如下:import tkinter as tkwindow = tk.Tk()window.title(test)window.geometry
11、(400x400)btn1 = tk.Button(window,text=one,width=5,bg=green)btn1.grid(row=0,column=0)btn2 = tk.Button(window,text=two,width=5,height=5,bg=red)btn2.grid(row=0,column=1)btn3 = tk.Button(window,text=three,width=3,height=3,bg=blue)btn3.grid(row=1,column=0)btn4 = tk.Button(window,text=four,width=15,height
12、=10,bg=yellow)btn4.grid(row=1,column=1)window.mainloop()第六步:事件绑定 一个Tkinter主要跑在mainloop进程里。Events可能来自多个地方,比如按键,鼠标,或是系统事件。 Tkinter提供了丰富的方法来处理这些事件。对于每一个控件Widget,你都可以为其绑定方法function。通过command属性给button绑定事件目的:点击一下按扭,在窗口中出现一行字第一种方法(command):from Tkinter import * def p_label(): global root Lb = Label(root,te
13、xt=我爱python) Lb.pack() root = Tk()B_n = Button(root,text=点我,command=p_label) #command后面不能有任何的标点符号B_n.pack()root.mainloop()第二种方法(bind):1、bind 的第一个参数是事件类型,它采用的描述方式是这 样的:,这里的 MODIFIER 即修饰符,它的全部取值如下:Control, Mod2, M2, Shift, Mod3, M3, Lock, Mod4, M4, Button1, B1, Mod5, M5 Button2, B2, Meta, M, Button3,B
14、3, Alt, Button4, B4, Double, Button5, B5 Triple, Mod1, M1。 而第三个 TYPE 表示类型,它的全部取值如下:Activate, Enter, Map, ButtonPress, Button, Expose, Motion, 辛星 2014 年度辛星 tkinter 教程第二版 tkinter 25 / 103 ButtonRelease,FocusIn, MouseWheel, Circulate, FocusOut, Property, Colormap, Gravity Reparent, Configure, KeyPress,
15、 Key, Unmap, Deactivate, KeyRelease Visibility, Destroy,Leave。第三个参数表 示细节,其实也就是对第二个参数的一些辅助说明。2、第二个参数可以是一个函数名,记住,不要加任何的标 点符号,否则运行时会报错的。第四步:计算器实现实例分析第3行,导入相应的包。第5-11,定义主界面和主界面标题、大小和输入过程中字符串表达式、结果和符号。第13行,定义输入的按键值类。第17-19行,按加按键时,字符串连接第20-22行,按退格键时消除前面的字符。第23-27行,按清理按键时,清除结果和符号第28-36行,按+-号时,设置数字和表达式第37-44行,按小数点时,设置数字和表达式第45-77行,按等于键时,根据表达式计算值,并显示第79-81行,定义复制键。第83-148行,利用格栅grid布局来给计算器界面布局第149-163行,定义菜单项和子菜单。第166-168行,程序调用
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1