Python图形界面之Tkinter简单用法

版权声明:支持原创,转载请说明~ https://blog.csdn.net/luoyayun361/article/details/83514853

前言

Tkinter 是 Python 标准的 GUI 工具包包含在Python标准安装包中,所以无需再另外安装。我个人觉得使用 Tkinter 创建 GUI 界面相比于 PyQt 来说代码更加简洁,不过看个人爱好吧,只要熟悉这些 GUI 工具包过后使用起来都不算难,关键是找到自己更喜欢的一种。

正文

首先通过创建一个简单的应用来逐步说明 Tkinter 的用法,示例来源于《Python 基础教程》。该应该是一个简单的文本编辑器,可以打开文件然后进行编辑,最后保存文件。

先来看看 UI 界面:

源代码:

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

代码解读

首先,要使用 Tkinter,就得先导入模块吧,这里将模块所有内容都导入了:

from tkinter import *

此外,编辑文本内容,需要用到一个编辑框,这里使用ScrolledText,该控件其实就是对应 Qt 里面的 QTextEdit,是同样的东西,只是叫法不同罢了。所以这里再导入该控件:

from tkinter.scrolledtext import ScrolledText

要创建 GUI,需要先创建一个将充当主窗口的顶级控件,为此,需要实例化一个 Tk 对象。如下:

top = Tk()

接着,可以给该创建设置一个标题:

top.title("Simple Editor")

创建完顶层窗口后,我们将调用 函数mainloop()以进入 Tkinter 主事件循环中。这就和 Qt 里面的 app.exec() 一样一样儿的。

紧接着创建ScrolledText对象,这是一个文本编辑控件,然后 pack 是一个布局管理器,用于调整控件的位置,必须要使用布局管理器,要不然控件将不可见。

pack 中的参数,side表示停靠的方位,相对于主窗口的位置,可设置成 LEFT、RIGHT、TOP 或 BOTTOM,expand表示是否填满分配给它的空间,fill表示要哪个坐标,可以是 X 或者 Y,BOTH 表示 x 和 Y 均填充满父窗口。

Entry()是一个输入框,用于输入需要打开的文件名,该控件对应 Qt 里面的 QLineEdit。

最后是两个按钮的创建,这里是直接使用控件的构造函数来配置控件。
如果分解开来可以这样写:

btn = Button()
btn['text'] = "Open"
btn.pack(side = LEFT)
btn['command'] = load

注意这里的 command 属性,这是添加按钮点击的行为,点击按钮时会调用 load 函数。

也可以不用分别给属性赋值,而使用方法 config 同时设置多个属性,如下:

btn.config(text = 'Open',command = load)

最后再来看看两个函数。
首先是 load 函数,这是用于打开文件的,通过 with open 来打开文件,将文件内容读取出来显示到文本框中。
contents.delete(‘1.0’,END) 是用于清空文本框中的内容,这里的1.0用来指定第一行和第0个字符(即第一个字符前面),使用 END 来指定文本末尾。
清空之后开始插入文本:contents.insert(INSERT,file.read()),file.read()是将文件中的所有内容读取出来。

同样 save() 函数就是用于保存文本框中的内容到文件中去,这里就不细说了。

ok,该界面很简单,基本就这些内容,如果要快速了解 pack 可用的属性,可以直接在命令行输入:help(Pack.config)进行查看。

事件处理

通过上面的示例知道,可以通过属性 command 给按钮置顶动作,这是一种特殊的事件处理,但 Tkinter 还提供了更通用的事件处理机制:方法 bind,要让控件对特定的事件进行处理,可对其调用方法 bind,并指定时间的名称和要使用的函数。示例如下:

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

mainloop()

其中是使用鼠标左按钮单击的事件名称,将事件关联到 callback 函数,当用户在窗口中单击时,将调用这个函数,向函数传递一个 event 对象,这个对象包含的属性随事件类型而异。将鼠标点击的坐标位置打印出来。

还有很多其他类型的事件,完整的清单可以使用下面的命令来获取:help(Tk.bind)

本文只是简单的介绍了 Tkinter 的使用,更多的用法还要通过帮助文档来进行深入了解。

猜你喜欢

转载自blog.csdn.net/luoyayun361/article/details/83514853