Python学习 第五章 图形界面设计

2023-11-19


第一章 函数、模块、包
第二章 数据类型
第三章 控制结构
第四章 面向对象设计

1 常用的 Python GUI 库

1.1 Tkinter

Tkinter 模块(TK接口),是 python 的标准 TK GUI 工具包接口。可以在Unix,Windows,Macintosh系统下使用
内置到Python的安装包中,只要安装好python,就能import Tkinter库,而且IDLE也是用Tkinter编写而成的

1.2 wxPython

wxPython,是一款开源软件,允许Python程序员方便地创建完整的、功能健全的GUI用户界面

1.3 创建GUI程序

1、导入 Tkinter 模块
2、创建控件
3、指定这个控件的 master, 即这个控件属于哪一个
4、告诉 GM(geometry manager) 有一个控件产生了。

2 创建Windows窗口

import tkinter     #导入tkinter模块
win = tkinter.Tk()      #创建windows窗口对象
win.title("我的第一个GUI程序")         #设置窗口标题
win.geometry("400x200+200+10")  
#设置窗口大小,宽x高,x为小写英文字母,+200表示窗口左边到屏幕左边的距离,-x表示窗体右边到屏幕右边的距离
win.minsize(200,100)      
#minsize(w,h),窗体可被拉伸的最小尺寸
win.maxsize(800,600)
win.mainloop()          #进入消息循环,即显示窗口

在这里插入图片描述

3 几何布局管理器

Tkinter几何布局管理器(Geometry Manager)用于组织和管理父组件(往往是窗口)中子组件的布局方式。Tkinter提供了3种不同风格的几何合布局管理类

3.1 pack——包装

采用的方式组织组件,pack布局根据子组件创建生成的顺序将其放在快速生成的界面中。

调用子组件的方法pack(),则该子组件在其父组件中采用pack布局:

pack (option=value,…)

import tkinter
root=tkinter.Tk()
root.geometry("400x200+200+10")  
label=tkinter.Label(root,text='hello,python')
label.pack()	#将Label组件添加到窗口中显示
button1=tkinter.Button(root,text='BUTTON1')	#创建文字是'BUTTON1'的Button组件
button1.pack(side=tkinter.LEFT)		#将button1组件添加到窗口中显示,左停靠
button2=tkinter.Button(root,text='BUTTON2')	  #创建文字是'BUTTON2'的Button组件
button2.pack(side=tkinter.RIGHT)	#将button2组件添加到窗口中显示,右停靠
root.mainloop()

在这里插入图片描述

3.2 grid——网格

采用表格结构组织组件,子组件位置由行/列确定的单元格决定,子组件可以跨越多行/列。在每一列中,列宽由这一列中最宽的单元格确定。

调用子组件的grid()方法,则该子组件在其父组件中采用grid局和布局:

grid (option=value,…)

grid几何布局管理器有两个重要的参数,row和column,用来指定将子组件放置到什么位置,如果不指定row,会将子组件放置到第1个可用的行上,如果不指定column,则使用第0列。

from tkinter import *
root = Tk()
root.geometry('200x200+280+280')
root.title('计算器示例')

#grid(网格)布局
L1=Button(root,text='1',width=5,bg='yellow')
L2=Button(root,text='2',width=5)
L3=Button(root,text='3',width=5)
L4=Button(root,text='4',width=5)
L5=Button(root,text='5',width=5,bg='green')
L6=Button(root,text='6',width=5)
L7=Button(root,text='7',width=5)
L8=Button(root,text='8',width=5)
L9=Button(root,text='9',width=5,bg='yellow')
L0=Button(root,text='0',width=5)
Lp=Button(root,text='.',width=5)

L1.grid(row=0,column=0)
L2.grid(row=0,column=1)
L3.grid(row=0,column=2)
L4.grid(row=1,column=0)
L5.grid(row=1,column=1)
L6.grid(row=1,column=2)
L7.grid(row=2,column=0)
L8.grid(row=2,column=1)
L9.grid(row=2,column=2)
L0.grid(row=3,column=0,columnspan=2,sticky=E+W)
Lp.grid(row=3,column=2,sticky=E+W)
root.mainloop()

在这里插入图片描述

3.3 place——位置

允许指定组件的大小与位置,优点是可以精确地控制组件的位置,不足之处是改变窗口的大小时子组件不能随之灵活地改变其大小

调用子组件的方法place(),则该子组件在其父组件中采用place布局:

place (option=value,…)

注意
Python的坐标系,左上角为原点(0,0),向右是x坐标的正方向,向下是y坐标的正方向。

from tkinter import *
root=Tk()
root.title("登录")
root['width']=200;root['height']=80
Label(root,text='用户名',width=6).place(x=1,y=1)
Entry(root,width=15).place(x=55,y=1)
Label(root,text='密码',width=6).place(x=1,y=20)
Entry(root,width=15,show='*').place(x=55,y=20)
Button(root,text='登录',width=8).place(x=40,y=40)
Button(root,text='取消',width=8).place(x=110,y=40)
root.mainloop()

在这里插入图片描述

4 Tkinter组件

控件 描述
Button 按钮控件;在程序中显示按钮。
Canvas 画布控件;显示图形元素如线条或文本
Checkbutton 多选框控件;用于在程序中提供多项选择框
Entry 输入控件;用于显示简单的文本内容
Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label 标签控件;可以显示文本和位图
Listbox 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton 菜单按钮控件,用于显示菜单项。
Menu 菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message 消息控件;用来显示多行文本,与label比较类似
Radiobutton 单选按钮控件;显示一个单选的按钮状态
Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text 文本控件;用于显示多行文本
Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow PanedWindow 是一个窗口布局管理的插件,可以包含一个或者多个子控件。
LabelFrame labelframe 是一个简单的容器控件。常用与复杂的窗口布局。
tkMessageBox 用于显示你应用程序的消息框。

4.1 标签组件 Label

用于在窗口中显示文本或位图

语法格式:

w = Label ( master, option, … )

from tkinter import *
win = Tk()
win.title("我的窗口")
lab1 = Label(win,text='你好',anchor='nw')   #位置垂直居上,水平居左
lab1.pack()     #显示Label组件

lab2 = Label(win,bitmap='question')
lab2.pack()     #显示Label组件

bm = PhotoImage(file = r"D:\postgraduate\study\py\book\aa.png")
lab3=Label(win,image=bm)
lab3.bm=bm
lab3.pack()     #显示Label组件

win.mainloop()      #显示窗口

在这里插入图片描述

4.2 按钮组件 Button

用于在 Python 应用程序中添加按钮,按钮上可以放上文本或图像,按钮可用于监听用户行为,能够与一个 Python 函数关联,当按钮被按下时,自动调用该函数。

语法格式:

w = Button ( master, option=value, … )

import tkinter
import tkinter.messagebox as msg
 
top = tkinter.Tk()
 
def helloCallBack():
   msg.showinfo( "Hello Python", "你好")
 
B =Button (top, text ="点我", command = helloCallBack)
 
B.pack()
top.mainloop()

在这里插入图片描述
在这里插入图片描述

4.3 单行文本框 Entry

主要用于输入单行内容和显示文本,可以方便地向程序传递用户参数

语法格式

Entry对象 = Entry(Windows窗口对象)
#创建Entry对象

Entry对象.pack()
#显示Entry对象

获取Entry组件的内容:

get()方法用于获取单行文本框内输入的内容

设置或获取Entry组件内容也可以使用StringVar()对象来完成,把Entry的textvariable属性设置为StringVar()变量,再通过StringVar()变量的get()和set()函数读取和输出相应文本内容

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python学习 第五章 图形界面设计 的相关文章

随机推荐

  • JSON.stringify()

    JSON stringify 将一个JavaScript值 对象或者数组 转换为一个 JSON字符串 如果指定了replacer是一个函数 则可以选择性的替换值 或者如果指定了replacer是一个数组 可选择性的仅包含数组指定的属性 语法
  • 粤嵌GEC6818开发板-入门感慨篇(续一)

    触摸屏的事件 include
  • Sql几种删除的区别

    Drop drop可用于删除数据库 drop database 数据库名称 删除数据表 use 数据库名称 drop table 数据表1名称 数据表2名 或删除数据表字段 use 数据库名称 alter table 数据表名称 drop
  • mqttxieyi

    Mqtt概述 Mqtt开发最初是用于卫星通讯监控输油管道的项目 一种用于嵌入式设备的通讯协议 这种通讯协议必须满足以下条件 易于实现 数据传输的服务质量可控 占用带宽小 传输数据内容不可预知 设备连接状态可知 MQTT 从诞生之初就是专为低
  • 使用PyCharm进行Python远程调试

    背景描述 在机房中 服务器通过ADB与多台Android设备相连接 并通过Python应用程序 QMSInterceptor 对Android设备进行任务调度 在开发环境中对QMSInterceptor调试完毕后 上传至服务器 发现程序运行
  • Linux基础介绍

    Linux的创始人Linus Torvalds Linux的官方标准发音为 lin ks Linux和Unix是非常像的 Linux就是根据Unix演变过来的 Linux是免费的 其实只是说Linux的内核免费 在Linux内核的基础上产生
  • JAVA协同过滤推荐算法

    1 什么是协同过滤 在推荐系统众多方法中 基于用户的协同过滤推荐算法是最早诞生的 原理也较为简单 该算法1992年提出并用于邮件过滤系统 两年后1994年被 GroupLens 用于新闻过滤 一直到2000年 该算法都是推荐系统领域最著名的
  • WPF TextBox 加默认提示文字

  • C语言pcre库的使用及验证IP地址的合法性

    PCRE是一个用C语言编写的正则表达式函数库 它十分易用 同时功能也很强大 性能超过了POSIX正则表达式库和一些经典的正则表达式库 在使用PCRE库时 首先肯定是需要安装pcre的 不过一般的系统都会有自带的PCRE库 不过如果想使用最新
  • Task1:李宏毅深度学习P1-P2

    这次借在Datawhale组队学习的机会补全一下机器学习上一些知识的漏洞 主要是标注一下自己需要注意的地方在这与大家分享 今日分享的是李宏毅深度学习Part1 2中自己之前不太重视的地方 1 在对机器学习的各类概念介绍时 还是能看出与国内授
  • 字符串09--表示数值的字符串

    字符串09 表示数值的字符串 jz53 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 请实现一个函数用来判断字符串是否表示数值 包括整数和小数 例如 字符串 100 5e2 123 3 1416 和 1E 16 都表示数值
  • Sublime Text 常用快捷键

    文章目录 通用 General 编辑 Editing 选择 Selecting 查找 替换 Finding Replacing 跳转 Jumping 窗口 Window 屏幕 Screen 工欲善其事 必先利其器 本文收集 Sublime
  • 解决报错:Uncaught TypeError: Cannot read properties of undefined (reading ‘install‘)

    在做vue2项目时出现如下错误 页面空白且控制台出现如下错误 报错内容 Uncaught TypeError Cannot read properties of undefined reading install at Vue use vu
  • Anaconda + jupyter notebook + jupyter lab环境配置

    1 更换源 1 1 pip源 pip config set global index url https pypi tuna tsinghua edu cn simple pip config set install trusted hos
  • SQL SERVER2008存储过程加密与解密

    前言 我们在设置数据库存储过程时经常会用到加密 如果遇到版本更新需要修改存储过程时 如果设计数据库时的存储过程没有留存 所以就必须用到存储过程的解密了 原来自己有个解密存储过程在SQL2000下应用无问题 后来升级到SQL2008后不好用了
  • 4.网络爬虫—Post请求(实战演示)

    网络爬虫 Post请求实战演示 POST请求 GET请求 POST请求和GET请求的区别 获取二进制数据 爬 百度官网 https www baidu com logo实战 发送post请求 百度翻译实战 使用session发送请求 模拟登
  • 微信小程序部署到线上环境

    微信小程序部署到线上环境 一 微信小程序申请 申请 并认证 未认证不能发布 认证需要300元 目前只支持企业认证 详细见官网说明 https mp weixin qq com cgi bin registermidpage action i
  • mac os mysql忘记root密码_mac上mysql报错以及root密码忘记解决办法

    1 对于前者ERROR 2002 HY000 Can t connect to local MySQL server through socket tmp mysql sock 2 这个错误 一般是mysql服务没开 命令行下执行sudo
  • java8的时期和时间

    文章目录 旧版日期时间的问题 新版日期时间介绍 Java util date java sql date SimpleDateFormatter calendar java8日期 DateTimeFormatter 计算 java8之前 j
  • Python学习 第五章 图形界面设计

    第五章 图形界面设计 1 常用的 Python GUI 库 1 1 Tkinter 1 2 wxPython 1 3 创建GUI程序 2 创建Windows窗口 3 几何布局管理器 3 1 pack 包装 3 2 grid 网格 3 3 p