python之GUI基础
程序员文章站
2022-04-11 17:28:14
...
图形用户界面(GUI)
- GUI就是包含按钮、文本框、等控件的窗口
- Tkinter是Python标准GUI工具包
初探
-
导入tkinter以及这个模块的所有内容
>>> import tkinter as tk >>> from tkinter import *
-
创建一个充当主窗口的*组件(控件),实例化一个Tk对象
>>> top = Tk()
-
调用函数mainloop()进入Tkinter主事件循环,出现一个窗口
>>> mainloop()
-
要创建按钮可以实例化Button类。如果没有Tk实例,创建控件也将
实例化Tk,所以可以不先实例化Tk,而直接创建控件>>> btn = Button()
-
创建的按钮是不可见的,需要使用布局管理器(也叫几何管理器)来告诉
Tkinter将它放在什么地方。而pack正是这样的一个管理器>>> btn.pack()
-
控件包含各种属性,可以使用它们来修改控件的外观和行为
>>> btn['text'] = 'Click me'
-
给按钮添加行为,单击该按钮就会出现指定的打印消息
>>> def clicked(): ... print('I was clicked!') ... ... >>> btn['command'] = clicked
-
可以分别给不同的属性赋值,使用方法config可以同时设置多个属性
-
>>> btn.config(text='Click me!', command=clicked)
-
还可以使用控件的构造函数来配置控件
>>> Button(text='Clicked me!', command=clicked).pack()
布局
-
对控件调用方法pack时,将把控件放在其父控件(主控件)中,要指定主控
件,可使用构造函数的第一个可选参数;如果没有指定,将把*主窗口用作主控件>>> Label(text="I'm in the first window").pack() >>> second = Toplevel() >>> Label(second, text="I'm in the second window").pack() # Toplevel表示除主窗口外的另一个*窗口,而Label就是文本标签
-
没有提供任何参数时,pack从窗口顶部开始将控件堆叠成一列,并让他们在窗口
中水平居中>>> for i in range(10): ... Button(text=i).pack()
-
但是控件的位置和拉伸方式是可以调整的。要指定将控件停靠在那一条边上,可将
参数side设置为LEFT、RIGHT、TOP或BOTTOM。要让控件在x或y方向上填满分配
给他的空间,可将参数fill设置为X、Y、或BOTH。要让控件随父控件(这里指窗
口)一起增大,可将参数expand设置为True。还有其他的选项,可通过help>>> help(Pack.config)
事件处理
-
可以通过设置属性command给按钮指定的动作(action)。这是一种特殊的事件处理
但Tkinter还提供了更通用的事件处理机制:方法bind。要让事件对特定的事件进行
处理,可对其调用方法bind,并将指定事件的名称和要使用的函数>>> from tkinter import * >>> top = Tk() >>> def callback(event): ... print(event.x, event.y) ... >>> top.bind('<Button-1>', callback) '2208846659464callback' # <Button-1>是使用鼠标左按钮单击的事件名称。我们将这种事件关联到函数 # callback。每当用户在窗口top中单击时,都将调用这个函数。 # 函数callback传递一个对象,这个对象包含的属性随事件类型而异