赞
踩
图形用户界面(Graphical User Interface,GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。Python提供了多个图形开发界面的库,几个常用的库如下:
这里主要介绍Python的tkinter库。thinker是Python的标准GUI库。由于tkinter是内置到Python的安装包中的,只要安装好Python之后就能加载tkinter库。对于简单的图形界面使用tkinter可以轻松完成。
首先看一个例子
- from tkinter import * # 加载tkinter模块
-
- win = Tk() # 创建以win为句柄的窗口
- win.title(string="古诗鉴赏")
- Label(win, text="山气日夕佳,飞鸟相与还。").pack()
- Button(win, relief=RIDGE, borderwidth=6, text="关闭", command=win.quit).pack(side="bottom")
- win.mainloop() # 开始窗口事件循环
运行结果
控件名称 | 说明 |
Button | 按钮控件:在程序中显示按钮 |
Canvas | 画布控件:用来画图形,如线条、多边形等 |
Checkbutton | 多选框控件:用于在程序内提供多项选择 |
Entry | 输入控件:定义一个简单的文字输入字段 |
Frame | 框架控件:定义一个窗体,以作为其他控件的容器 |
Label | 标签控件:定义一个文字或是图片标签 |
Listbox | 列表框控件:此控件定义一个下拉方块 |
Menu | 菜单控件:定义一个菜单栏、下拉菜单和弹出菜单 |
Menubutton | 菜单按钮控件:用于显示菜单项 |
Message | 消息控件:定义一个对话框 |
Radiobutton | 单选按钮控件:定义一个单选按钮 |
Scale | 范围控件:定义一个滑动条,来帮助用户设置数值 |
Scrollbar | 滚动条控件:定义一个滚动条 |
Text | 文本控件:定义一个文本框 |
Toplevel | 此控件与Frame控件类似,可以作为其他控件的容器。但是此控件有自己的最上层窗口,可以提供窗口管理接口 |
常用操作:(为了方便演示,此处在一个窗口中完成)
- from tkinter import *
- win = Tk()
- # 创建一个文字与边框距离为20像素的按钮,padx='',command(动作),text(标题文字)
- Button(win, padx=20, text="关闭", command=win.quit).pack()
- # 边框控件,borderwidth,relief
- Button(win, relief=RIDGE,borderwidth=6, text="关闭", command=win.quit).pack()
- # 设置鼠标指针的类型,cursor=""
- Button(win, cursor="crosshair", text="关闭", command=win.quit).pack()
- # 定义Button、Label或Text的高度和宽度height,width
- Button(win, height=3, width=10, text="关闭", command=win.quit).pack()
- # 定义一个背景颜色为绿色的文字标签background
- Label(win, background="#00ff00", text="大漠孤烟直,长河落日圆。").pack()
- # 设置文字标签的字体,font
- Label(win, font=("细明体", 20, "bold italic underline"), text="举杯邀明月,对影成三人。").pack()
- # 设置文本的颜色,foreground
- Label(win, foreground="#ff0000", text="海上生明月,天涯共此时。").pack()
- win.mainloop()

tkinter控件都可以使用下列方法来设置控件在窗口内的几何位置。
pack()方法依照其内的属性设置,将控件放置在Frame控件(窗体)或者窗口内,有下列选项
使用pack()方法创建窗体与按钮
- from tkinter import *
- # 主窗口
- win = Tk()
- # 第1个窗体
- frame1 = Frame(win, relief=RAISED, borderwidth=2)
- frame1.pack(side=TOP, fill=BOTH, ipadx=10, ipady=10, expand=0)
- Button(frame1, text="Button 1").pack(side=LEFT, padx=10, pady=10)
- Button(frame1, text="Button 2").pack(side=LEFT, padx=10, pady=10)
- Button(frame1, text="Button 3").pack(side=LEFT, padx=10, pady=10)
- # 第2个窗体
- frame2 = Frame(win, relief=RAISED, borderwidth=2)
- frame2.pack(side=BOTTOM, fill=NONE, ipadx='1c', ipady='1c', expand=1)
- Button(frame2, text="Button 4").pack(side=RIGHT, padx='1c', pady='1c')
- Button(frame2, text="Button 5").pack(side=RIGHT, padx='1c', pady='1c')
- Button(frame2, text="Button 6").pack(side=RIGHT, padx='1c', pady='1c')
- # 第3个窗体
- frame3 = Frame(win, relief=RAISED, borderwidth=2)
- frame3.pack(side=LEFT, fill=X, ipadx='0.1i', ipady='0.1i', expand=1)
- Button(frame3, text="Button 7").pack(side=TOP, padx='0.1i', pady='0.1i')
- Button(frame3, text="Button 8").pack(side=TOP, padx='0.1i', pady='0.1i')
- Button(frame3, text="Button 9").pack(side=TOP, padx='0.1i', pady='0.1i')
- # 第4个窗体
- frame4 = Frame(win, relief=RAISED, borderwidth=2)
- frame4.pack(side=RIGHT, fill=Y, ipadx='10p', ipady='10p', expand=1)
- Button(frame4, text="Button 10").pack(side=BOTTOM, padx='10p', pady='10p')
- Button(frame4, text="Button 11").pack(side=BOTTOM, padx='10p', pady='10p')
- Button(frame4, text="Button 12").pack(side=BOTTOM, padx='10p', pady='10p')
- # 开始窗口的事件循环
- win.mainloop()

运行结果
grid()方法将控件依照表格的栏列方式来放置在窗体或者窗口内,有下列选项
使用grid()创建5x5安你有数组
- from tkinter import *
- # 主窗口
- win = Tk()
- # 创建窗体
- frame = Frame(win, relief=RAISED, borderwidth=2)
- frame.pack(side=TOP, fill=BOTH, ipadx=5, ipady=5, expand=1)
- # 创建按钮数组
- for i in range(5):
- for j in range(5):
- Button(frame, text="("+str(i)+","+str(j)+")").grid(row=i, column=j)
-
- # 开始窗口循环
- win.mainloop()
运行结果
place()方法设置控件在窗体或者窗口内的绝对地址或相对地址。有下列选项
下面使用place()方法创建2个按钮。第1个按钮的位置在距离窗体左上角的(40,40)坐标处,第2个按钮的位置在距离窗体左上角的(140,80)坐标处。按钮的宽度是80个像素,按钮的高度是40个像素。
- from tkinter import *
-
- win = Tk()
-
- frame = Frame(win, relief=RAISED, borderwidth=2, width=400, height=300)
- frame.pack(side=TOP, fill=BOTH, ipadx=5, ipady=5, expand=1)
- # 第一个按钮的位置在距离窗体左上角的(40,40)坐标处
- button1 = Button(frame, text="Button 1")
- button1.place(x=40, y=40, anchor=W, width=80, height=40)
- # 第二个按钮的位置在距离窗体左上角的(140,40)坐标处
- button2 = Button(frame, text="Button 2")
- button2.place(x=140, y=80, anchor=W, width=80, height=40)
-
- win.mainloop()
运行结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。