Python 图形界面 GUI

发布于 2021-07-22 12:33:05 字数 2362 浏览 1478 评论 0

Python 支持多种图形界面的第三方库,包括:

1、Tk
2、wxWidgets
3、Qt
4、GTK

但是 Python 自带的库是支持 Tk 的 Tkinter,使用 Tkinter,无需安装任何包,就可以直接使用。本章简单介绍如何使用 Tkinter 进行 GUI 编程。

一、Tkinter

我们来梳理一下概念:

我们编写的 Python 代码会调用内置的 Tkinter,Tkinter 封装了访问 Tk 的接口;

Tk 是一个图形库,支持多个操作系统,使用Tcl语言开发;

Tk 会调用操作系统提供的本地 GUI 接口,完成最终的 GUI。

所以,我们的代码只需要调用 Tkinter 提供的接口就可以了。

二、第一个GUI程序

使用 Tkinter 十分简单,我们来编写一个 GUI 版本的 Hello, world。

第一步、是导入 Tkinter 包的所有内容:

from tkinter import *

第二步、是从 Frame 派生一个 Application 类,这是所有 Widget 的父容器:

class Application(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

    def createWidgets(self):
        self.helloLabel = Label(self, text='Hello, world!')
        self.helloLabel.pack()
        self.quitButton = Button(self, text='Quit', command=self.quit)
        self.quitButton.pack()

在 GUI 中,每个 Button、Label、输入框等,都是一个 Widget。Frame 则是可以容纳其他 Widget 的 Widget,所有的 Widget 组合起来就是一棵树。

pack() 方法把 Widget 加入到父容器中,并实现布局。pack() 是最简单的布局,grid() 可以实现更复杂的布局。

在 createWidgets() 方法中,我们创建一个 Label 和一个 Button,当 Button 被点击时,触发 self.quit() 使程序退出。

第三步,实例化 Application,并启动消息循环:

app = Application()
# 设置窗口标题:
app.master.title('Hello World')
# 主消息循环:
app.mainloop()

GUI 程序的主线程负责监听来自操作系统的消息,并依次处理每一条消息。因此,如果消息处理非常耗时,就需要在新线程中处理。

三、输入文本

我们再对这个 GUI 程序改进一下,加入一个文本框,让用户可以输入文本,然后点按钮后,弹出消息对话框。

from tkinter import *
import tkinter.messagebox as messagebox

class Application(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

    def createWidgets(self):
        self.nameInput = Entry(self)
        self.nameInput.pack()
        self.alertButton = Button(self, text='Hello', command=self.hello)
        self.alertButton.pack()

    def hello(self):
        name = self.nameInput.get() or 'world'
        messagebox.showinfo('Message', 'Hello, %s' % name)

app = Application()
# 设置窗口标题:
app.master.title('Hello World')
# 主消息循环:
app.mainloop()

当用户点击按钮时,触发 hello(),通过 self.nameInput.get() 获得用户输入的文本后,使用 tkMessageBox.showinfo() 可以弹出消息对话框。

四、小结

Python 内置的 Tkinter 可以满足基本的 GUI 程序的要求,如果是非常复杂的 GUI 程序,建议用操作系统原生支持的语言和库来编写。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

文章
评论
84963 人气
更多

推荐作者

微信用户

文章 0 评论 0

小情绪

文章 0 评论 0

ゞ记忆︶ㄣ

文章 0 评论 0

笨死的猪

文章 0 评论 0

彭明超

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文