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

第五章 图形界面设计

  • 1 常用的 Python GUI 库
    • 1.1 Tkinter
    • 1.2 wxPython
    • 1.3 创建GUI程序
  • 2 创建Windows窗口
  • 3 几何布局管理器
    • 3.1 pack——包装
    • 3.2 grid——网格
    • 3.3 place——位置
  • 4 Tkinter组件
    • 4.1 标签组件 Label
    • 4.2 按钮组件 Button
    • 4.3 单行文本框 Entry

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

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()          #进入消息循环,即显示窗口

Python学习 第五章 图形界面设计_第1张图片

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()

Python学习 第五章 图形界面设计_第2张图片

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()

Python学习 第五章 图形界面设计_第3张图片

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()

Python学习 第五章 图形界面设计_第4张图片

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()      #显示窗口

Python学习 第五章 图形界面设计_第5张图片

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()

在这里插入图片描述
Python学习 第五章 图形界面设计_第6张图片

4.3 单行文本框 Entry

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

语法格式

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

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

获取Entry组件的内容:

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

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

你可能感兴趣的:(Python,python,学习,开发语言)