夜间模式暗黑模式
字体
阴影
滤镜
圆角
主题色
Python学习笔记11-图形用户界面

用户图形界面(Tkinter)

模块tkinter提供了一个GUI工具包

创建充当主窗口的顶级组件:

top = Tk()
# 在常规程序中, 将调用mainloop进入Tkinter主事件循环
mainloop()

创建其他空间(如果没有Tk实例, 创建控件将会实例化Tk)

Button控件和它的属性:

btn = Button()
# 修改属性(也可以在构造的时候赋值)
btn['text'] = 'Click me!'

# 事件
def clicked():
    print('I was clicked!')

btn['command'] = clicked

管理布局

使用pack():

btn.pack()
# 将参数side设置为LEFT, RIGHT, TOP, BOTTOM指定控件停靠在哪边
# 参数fill设置为X, Y, BOTH指定空间在x轴, y轴, 和两个轴填满空间
# 参数expand指定为True可以让空间随父控件增大
# 其他参数可以通过help(Pack.config)了解

grid(): 将控件放在不可见的表格单元格中, 可指定参数rowcolum, 使用help(Grid.config)获取具体参数

place(): 指定控件的x和y坐标以及高度和宽度, 使用help(Place.config)获取具体参数

事件处理

除了设置属性command给按钮指定动作, 还可以使用bind方法让控件对特定的事件进行处理

# 鼠标单击时间
>>> top = Tk()
>>> def f(event):
	print(event.x, event.y)

	
>>> top.bind('<Button-1>', f)
'2561627454024f'
>>> 110 64
110 64
92 55
103 31

'<Button-1>'是鼠标单击事件名称, 当用户在top中单击时, 都将向函数f传递一个对象, 对于鼠标单击时间, 它提供了x和y坐标

其他事件可通过help(Tk.bind)获取

一个简单的文本编辑器

from tkinter import *
from tkinter.scrolledtext import ScrolledText

def load():
    with open(filename.get()) as file:
        contents.delete('1.0', END)
        contents.insert(INSERT, file.read())

def save():
    with open(filename.get(), 'w') as file:
        file.write(contents.get('1.0', END))

top = Tk()
top.title('Editor')

contents = ScrolledText()
contents.pack(side = BOTTOM, expand = True, fill =  BOTH)

filename = Entry()
filename.pack(side=LEFT, expand=True, fill=X)

Button(text='Open', command=load).pack(side=LEFT)
Button(text='Save', command=save).pack(side=LEFT)

mainloop()

暂无评论

发送评论 编辑评论


				
上一篇
下一篇