第12章 图形用户界面

12.1 创建GUI示例应用程序

Tkinter是Python标准GUI工具包,包含在Python标准安装中。

本章以实现简单的文本编辑器为例

1. 初探

导入模块tkinter

#导入模块并重命名为tk(为保留其命名空间,同时减少输入量)
import tkinter as tk
或
#直接导入这个模块的所有内容
from tkinter import *

创建顶层控件(主窗口)
top = Tk()
顶层控件添加标题
top.title("Simple Editor")

进入Tkinter主事件循环
mainloop()

#创建按钮(此时这个按钮是不可见的)
1 btn = Button()
#使用布局管理器(或称几何体管理器),在最简单的情况下只需使用管理器pack,即调用方法pack
2 btn.pack()
#添加文本
3 btn['text'] = 'Click me!'
#给按钮添加行为
4 def click():
5    print('I was clicked!')
6 btn['command'] = click

第3和6行可简写为
btn.config(text='Click me!', command=clicked)
第1、2、3、6行可简写为
Button(text='Click me too!', command=clicked).pack()

2. 布局

#创建除主窗口外的另一个顶级窗口
second = Topleval()
#创建Label控件,并设置父窗口为second
Label(second, text = "I'm in the socond window!").pack()
#没有提供父窗口参数时,默认将主窗口作为父控件,pack从窗口顶部开始将控件堆叠成一列,并让它们在窗口中水平居中
Label(text = "I'm in the socond window!").pack()

3. 事件处理

>>> from tkinter import *
>>> top = Tk()
>>> def callback(event):
... print(event.x, event.y)
...
>>> top.bind('<Button-1>', callback)
'4322424456callback'

其中<Button-1>是使用鼠标左按钮(按钮1)单击的事件名称。将这种事件关联到函数callback。这样,每当用户在窗口top中单击时,都将调用这个函数。向函数callback传递一个event对象,这个对象包含的属性随事件类型而异。

4. 最终的程序

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


12.2 使用其他GUI工具包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MallocLu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值