用Python创建GUI的简单方法

345 阅读4分钟

每当我们谈论Python编程时,我们经常会讨论围绕它的庞大社区,它将这种语言用于许多有用的目的,以及我们可以用它解决的各种问题。大多数Python程序的核心是使用 "命令行"。这在大多数情况下对那些在日常编程场景中经常看到终端的人来说并不是一个问题。

对于一个仍想使用Python程序的正常人来说,情况并非如此,但存在着一个数字鸿沟,可以看作是 "GUI差距"。

那么,我们谈论的这个GUI是什么呢?

GUI或图形用户界面提供了一种图形化的工具,可以交互式地用于执行某些操作,这使得程序对各种受众来说更容易接近。 GUI需要解决的另一个障碍是,它们自己不容易编程。这个问题有什么解决办法呢?

好吧,PySimpleGUI真的很方便,它为我们提供了几个 选项,可以轻松地对GUI进行编程,而且使用的代码行数更少。

PySimpleGUI简介

PySimpleGUI *是一个Python包,它为我们提供了各种选择,为所有级别的Python程序员创建GUI。*这个包实现了大部分的 "模板代码"(在多个地方重复的代码部分,几乎没有变化)。根据所使用的程序和框架,一个PySimpleGUI程序可能需要1/2到1/10的代码来直接使用其中一个框架创建一个相同的窗口。

为了对一个简单的GUI进行编程,我们需要使用一个 "布局"来指定我们的 "窗口",其中包含小部件或 "元素"(在PySimpleGUI中称为元素)。我们指定的这个布局被用来创建一个窗口,并使用4个支持的框架,为我们的应用程序做所有繁重的工作,以显示并与我们的窗口互动。

支持的框架包括**Tkinter、Qt、WxPython和Remi。** 这些包有时被称为**"包装器"。**

使用PySimpleGUI来理解核心概念

  • 安装PySimpleGUI库并将其导入为sg

  • 导入

  • 定义窗口的内容。这里我们要为我们的GUI定义布局

布局的第一部分是GUI的顶行文本,即**"你的城市名称是什么?"。

第二部分输入语句,**键='-INPUT-'。**语法的关键部分将连接我们的输入和值,在显示输出时将被消耗。

布局的第三部分应该是输出层,它被赋予一个特定的尺寸,同样提供了key="-OUTPUT-"

布局的第四部分图形按钮,文本**"OK ""Quit "**并排排列。

这就是我们的布局定义的总结:

#Define the window's contents
layout = [[sg.Text("What's your city name?")],
          [sg.Input(key='-INPUT-')],
          [sg.Text(size=(40,1), key='-OUTPUT-')],
          [sg.Button('Ok'), sg.Button('Quit')]]

  • 现在,我们已经定义了我们的布局,在创建我们的GUI窗口时,我们要为我们的布局提供一个 "标题"。我们使用PySimple GUI包提供的Window方法,将标题布局变量作为args来传递。
#Create the window
window = sg.Window('Window Title', layout)

  • 代码的下一部分是定义一个条件。window.read方法读取**"事件",在这种情况下,就是点击我们窗口中的 "X"(关闭)按钮来关闭它,这是由PySimple GUI提供的 "WINDOW_CLOSED"函数来处理的,或者"退出 "**按钮也会触发一个事件。在这两种情况下,我们都在处理这些事件,并从循环中断开,关闭我们的GUI。

  • 条件的最后部分是我们使用"-OUTPUT-"的地方,它已经被链接到我们窗口的输出层,我们正在用字符串 "欢迎来到'+ values['-INPUT-'] + "!谢谢你试用PySimpleGUI",这也是与"-INPUT-"相联系的,window.read函数捕捉到了这个值并将其显示在我们预先定义的布局中。

#Display and interact with the Window using an Event Loop
while True:
    event, values = window.read()
    # See if user wants to quit or window was closed
    if event == sg.WINDOW_CLOSED or event == 'Quit':
        break
    # Output a message to the window
    window['-OUTPUT-'].update('Welcome to ' + values['-INPUT-'] + "! Thanks for trying PySimpleGUI")

# Finish up by removing from the screen
window.close()

完整的PySimpleGUI代码与输出

#install PySimpleGUI library
!pip install library


import PySimpleGUI as sg

#Define the window's contents
layout = [[sg.Text("What's your city name?")],
          [sg.Input(key='-INPUT-')],
          [sg.Text(size=(40,1), key='-OUTPUT-')],
          [sg.Button('Ok'), sg.Button('Quit')]]

#Create the window
window = sg.Window('Window Title', layout)

#Display and interact with the Window using an Event Loop
while True:
    event, values = window.read()
    # See if user wants to quit or window was closed
    if event == sg.WINDOW_CLOSED or event == 'Quit':
        break
    # Output a message to the window
    window['-OUTPUT-'].update('Welcome to ' + values['-INPUT-'] + "! Thanks for trying PySimpleGUI")

# Finish up by removing from the screen
window.close()

总结

在这篇文章中,我们使用PySimple GUI库来创建一个非常简单的窗口。这个包背后的整个想法是在底层代码的实现上提供一个易于使用和人类可读的抽象,以便用几行代码创建一个GUI。因此,对于几乎所有级别的Python开发者来说,这是一个伟大的库,可以简单而直观地创建GUI。