python核心编程(第三版) 第五章 -GUI编程

一、基本概念

python3默认的UI工具包是tkinter.
顶层窗口: 包含具体窗口内容的容器是顶层窗口;
控件:顶层窗口上可以包含一些小的窗口组件,称之为控件;
根窗口: GUI程序可以有多个顶层窗口,但只能有一个顶层窗口是根窗口。
控件可以独立存在,也可以作为容器存在。
包含其它控件的控件被称为那些控件的父控件,而被包含的控件叫做该控件的子控件;
一个GUI程序从开始到结束是通过整套事件体系来驱动的,这种方式称为事件驱动处理;
tkinter有三种布局管理器来帮助控件集进行定位:Place,Pack,Grid;
当所有控件都摆好之后,程序就可以进入无限的主循环之中,所有其它的行为都通过回调来处理。

二、pack布局

因为UI暂时不是我学习的重点,因此这里仅记录pack布局方式。
更多内容可参考:
http://effbot.org/tkinterbook/tkinter-index.htm

pack布局管理器在行和列上对控件进行组织。你可以使用的选项包括:fill, expand, and side。
何时使用pack布局:

  1. 将一个控件填满其父容器控件
  2. 将数个控件纵向排列
  3. 将数个控件横向排列

示例1:

from tkinter import *

root = Tk()

listbox = Listbox(root)
listbox.pack()

for i in range(20):
    listbox.insert(END, str(i))

mainloop()

默认显示,20个数字只显示出来10个,此时我们会去拖动窗口,让窗口尺寸变大。
在这里插入图片描述
尺寸改变之后,listbox的大小并未改变,显示效果不好:
在这里插入图片描述

改进如下:

listbox.pack(fill=BOTH, expand=1)

我们给pack方法给了两个参数,那么listbox的尺寸就会跟随父控件的尺寸而变化了:
在这里插入图片描述

示例2:

在这里插入图片描述

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
' a test module '

__author__ = 'TaoGuan'


from tkinter import *

root = Tk()

w = Label(root, text="Red", bg="red", fg="white")
w.pack()
w = Label(root, text="Green", bg="green", fg="black")
w.pack()
w = Label(root, text="Blue", bg="blue", fg="white")
w.pack()

mainloop()

可以使用fill=X,让子控件与父控件等宽:
在这里插入图片描述

from tkinter import *

root = Tk()

w = Label(root, text="Red", bg="red", fg="white")
w.pack(fill=X)
w = Label(root, text="Green", bg="green", fg="black")
w.pack(fill=X)
w = Label(root, text="Blue", bg="blue", fg="white")
w.pack(fill=X)

mainloop()

示例3

在这里插入图片描述

from tkinter import *

root = Tk()

w = Label(root, text="Red", bg="red", fg="white")
w.pack(side=LEFT)
w = Label(root, text="Green", bg="green", fg="black")
w.pack
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值