ptrhon GUI编程

这篇博客详细介绍了Python GUI编程,包括GUI程序步骤、基本概念、控件、窗口配置、参数选项、事件绑定和各种组件的使用,如Message、Entry、Checkbutton、Radiobutton、Scale和Canvas等。还涵盖了图像处理、菜单和布局管理器,以及如何实现动画效果和多线程交互。
摘要由CSDN通过智能技术生成

ptrhon GUI编程

GUI程序步骤

  1. 从tkinter中加载组件类

    • from tkinter import *
  2. 创建组件类实例

    • Label(父组件对象, 标签配置选项),例如wedget = Label(None,text=’wy’):默认顶层窗口,显示文本
    • 另外组件的配置方法:wedget[‘text’]=’wy’;wedget.config(text=’wy’)
  3. 在父组件中打包该实例.wedget.pack(),调用打包几何管理器,安排组件在容器中的位置,返回空.

    • 安排组件位置依据:
      • 被pack()的顺序.窗口收缩时,先打包的组件最后被裁切
      • 边的选项设置
    • side参数:父组件边中的位置,例如TOP,LEFT
    • expand参数:YES为组件扩展空间
    • fill参数:拉伸组件充满空间.Y垂直,X水平,BOTH都拉伸
    • anchor参数:分配空间大于组件需要的显示空间时,定位,默认CENTER,有N,E,W,S,NE,NW,SE,SW等方位
    • pack_forget():擦除(取消映射,隐藏)一个绘制的组件
  4. 调用主循环,显示窗口,开始事件循环.

    • wedget.mainloop():可作为函数和方法

基本概念

根窗口:tkinter.Tk()返回的对象,GUI程序中可以有多个顶层窗口,但是其中只能有一个是根窗口(可以手动创建多个根窗口)默认都会创建TK作为父窗口.

顶层窗口:在应用中独立显示窗口.Toplevell或TK.

控件:GUI 组件,控件可以独立存在,也可以作为容器存在。如果一个控件包含其他控件,就可以将其认为是那些控件的父控件。相应地,如果一个控件被其他控件包含,则将其认为是那个控件的子控件。

事件:控件的一些相关的行为.

回调:GUI 对事件的响应.

事件驱动处理:一个 GUI 应用从开始到结束就是通过整套事件体系来驱动的。

布局管理器:帮助控件集进行定位.三种:

  • place:直接提供控件的大小和摆放位置,然后管理器就会将其摆放好。会加重编程开发者的负担.
  • pack:会把控件填充到正确的位置(即指定的父控件中),然后对于之后的每个控件,会去寻找剩余的空间进行填充。(主要)
  • grid:基于网格坐标,使用 Grid 来指定 GUI 控件的放置。Grid 会在它们的网格位置上渲染 GUI 应用中的每个对象

复合组件:Dialog,ScrolledText, OptionMenu

回调安排:组件的after,wait,update方法

控件

控件 描述
Button 与Label类似,但提供额外的功能,如鼠标悬浮、按下、释放以及键盘活动/事件
BitmapImage 图像组件,用于在其他组件上显示位图
Canvas 提供绘制形状的功能(线段、椭圆、多边形、矩形),可以包含图像或位图
Checkbutton 多选框,可以勾选其中的任意个(与HTML的checkbox输入类似)
Entry 单行文本框
Frame 包含其他控件的纯容器
Label 用于包含文本或图像
LabelFrame 标签和框架的组合,拥有额外的标签属性
Listbox 给用户显示一个选项列表来进行选择
Menu 按下Menubutton后弹出的选项列表,用户可以从中选择
Menubutton 用于包含菜单(下拉、级联等)
Message 消息。与Label类似,不过可以显示成多行
PanedWindow 一个可以控制其他控件在其中摆放的容器控件
PhotoImage 图像组件,用于在其他组件上显示全彩色图像
Radiobutton 单选按钮
Scale 线性“滑块”控件,根据已设定的起始值和终止值,给出当前设定的精确值
Scrollbar 为Text、Canvas、Listbox、Enter等支持的控件提供滚动功能
Spinbox Entry和Button的组合,允许对值进行调整
Text 多行文本框,用于收集(或显示)用户输入的文本(与HTML的textarea类似)
Toplevel,TK 与Frame类似,不过它提供了一个单独的窗口容器

窗口

方法:

  • title(‘标题’):设置窗口标题
  • quit():结束mainloop事件循环呼叫,退出程序
  • destroy():关闭一个窗口(及其子窗口)或删除一个组件
  • protocol(‘WM_DELETE_WINDOW’, lambda:None):忽略关闭,设置x的功能
  • iconbitmap(‘图标或位图文件’):改变顶层窗口的图标
  • maxsize():获取最大化窗口的大小(宽度,高度)
  • geometry(“宽x高+离屏幕左边界距离+离屏幕上边界距离”).x是小写字母x,不是乘号
  • iconify():隐藏窗口,显示图标,像最小化
  • withdraw():隐藏窗口
  • deiconify():重新创建已隐藏或删除的窗口
  • state():查看或改变窗口状态. normal, icon,iconic (see wm_iconwindow), withdrawn, or zoomed (全屏,只在Windows上).
  • bell():系统的声音接口
  • flash():使组件瞬时闪动,快速变换颜色

参数配置选项

  • master或第一个参数:父控件,不传入或传入None都默认Tk
  • text:显示文本
  • command:注册处理器,记录组件事件发生调用的行为,任何可调用对象(函数,lambda,类方法,可调用类等)
    • 不会接到参数,可以通过全局变量,类实例属性,间接层提供额外属性
    • 如果直接调用一个有参数的函数,会在创建时运行,需要间接层(放入一个无参的函数或lambda)
  • state:状态.DISABLED(禁用),NORMAL(正常),READONLY(只读)

配置组件外观外观:

  • bg:背景颜色,颜色名称或十六进制字符串(“#ff0000”)
  • fg:前景颜色,文本颜色
  • font:传入(字体系列,大小,类型)三元组.字体系列有Times,Courier,Helvetica等,类型有:normal(正常),bold(粗体),romam(罗马),italc(斜体),underline(下划线),overstrike(加粗)等
  • height:高度
  • width:宽度
  • bd:边框宽度
  • relief:边框类型,FLAT(扁平),SUNKEN(凹陷),RAISED(凸起),GROOVE(凹槽),SOLID(加粗),RIDGE(脊柱)
  • cursor:鼠标经过时指针外观.crdss(十字),pencil(铅笔),hand2(手形2)
  • padx,pady:留白,周围添加额外空间

对话框

通过脚本弹出窗口,提供或要求额外的信息.分为模态(会阻止其他界面,直至被关闭)和非模态(不干扰其他界面)

通用对话框:

  • 都是模态
  • 位于kinter.messagebox中,第一个参数是标题,第二个参数是显示文字:askokcancel(返回True和False), askquestion(返回yes和no), askretrycancel(返回True和False), askyesno(返回True和False), askyesnocancel(返回True和False和不返回), showerror(返回0k), showinfo(返回0k), showwarning(返回0k)
  • tkinter.filedialog中,文件打开和保存对话框,返回相应的目录路径,文件路径或文件对象:’askdirectory’, ‘askopenfile’, ‘askopenfilename’, ‘askopenfilenames’, ‘askopenfiles’, ‘asksaveasfile’, ‘asksaveasfilename’.可以传入:filetypes(用于选择文件的名称模式),initialdir(起始目录),initialfile(“文件名”),title(对话框窗口),defautextension(默认选择),parent(显示为嵌入式子级)
  • tkinter.colorchooser中askcolor,调色板选择颜色,会返
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WY_记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值