Python GUIs for Humans

用于人类的Python图形用户界面

将tkinter、Qt、WxPython和REMI(基于浏览器)GUI框架转换为更简单的界面。通过使用初学者理解的Python核心数据类型(列表和字典)简化了窗口定义。通过将事件处理从基于回调的模型更改为消息传递模型,可以进一步简化

您的代码不是必填项具有面向对象的体系结构,使包可以被更多的受众使用。虽然体系结构很容易理解,但它并不容易理解。必然限制您只处理简单的问题

但是,有些程序并不能很好地适用于PySimpleGUI。根据定义,PySimpleGUI实现底层GUI框架功能的子集。很难准确定义哪些程序适合PySimpleGUI,哪些不适合。这取决于你的计划的细节。复制Excel的每一个细节就是不太适合PySimpleGUI的一个例子

Japanese version of this readme

Buy Me A Coffee

我想喝杯咖啡!它支持顾问、编辑、域名注册和PySimpleGUI成为一个蓬勃发展的项目所需的许多其他东西。每一笔捐款都是有帮助的,我们需要并感激帮助。


统计数据📈

PyPI统计信息和版本

Tk TK 2.7 Qt WxPython 网络(REMI)
tkinter tkinter 2.7 downloads qt wx web
tkinter tkinter27 Downloads Downloads Downloads
tkinter tkinter 2.7 qt wx web
PyPI pyversions PyPI pyversions PyPI pyversions PyPI pyversions PyPI pyversions

GitHub统计信息

问题 提交活动 星星 文档
GitHub issues commit activity stars Documentation Status
GitHub closed issues last commit


什么是PySimpleGUI❓

PySimpleGUI是一个Python包,它允许所有级别的Python程序员创建GUI。您可以使用包含小部件(在PySimpleGUI中称为“元素”)的“布局”来指定GUI窗口。您的布局用于创建一个窗口,该窗口使用4个受支持的框架之一来显示您的窗口并与之交互。支持的框架包括tkinter、Qt、WxPython或REMI。术语“包装器”有时用于这些类型的包裹

您的PySimpleGUI代码比直接使用底层框架编写的代码更简单、更短,因为PySimpleGUI为您实现了大部分“样板代码”。此外,还简化了接口,以便需要尽可能少的代码即可获得所需的结果。根据使用的程序和框架的不同,PySimpleGUI程序可能需要1/2到1/10的代码量才能直接使用其中一个框架创建相同的窗口

虽然目标是封装/隐藏您在其上运行的GUI框架使用的特定对象和代码,但如果需要,您可以直接访问框架的依赖小部件和窗口。如果尚未使用PySimpleGUIAPI公开或访问设置或功能,则不会将您与框架隔开。您可以扩展功能,而无需直接修改PySimpleGUI包本身

弥合“GUI鸿沟”

Python为编程社区带来了大量的人。项目的数量和涉及的领域之广令人难以置信。但通常情况下,除了少数人之外,所有人都无法接触到这些技术。大多数Python程序都是基于“命令行”的。这对于程序员来说不是问题,因为我们都习惯于通过文本界面与计算机交互。虽然程序员对命令行界面没有问题,但大多数“普通人”都有问题。这造成了一个数字鸿沟,一个“GUI鸿沟”

向程序添加GUI可使该程序向更广泛的受众开放。它变得更加平易近人。GUI还可以使与某些程序的交互变得更容易,即使对于那些熟悉命令行界面的人也是如此。最后,有些问题需要GUI


关于我👋

嗨,你们好!我是迈克。你会发现我就在这里,在PySimpleGUI GitHub上,解决问题,不断推动PySimpleGUI向前发展。我把白天、晚上和周末都奉献给了项目和PySimpleGUI用户。我们的成功最终是共享的。当你成功的时候我就成功了

虽然我是Python的新手,但我从70年代就开始编写软件了。我职业生涯的大部分时间都是在硅谷创造产品。我为PySimpleGUI带来了与我开发的公司产品相同的专业精神和奉献精神。你们现在是我的客户了

项目目标🥅

PySimpleGUI项目最重要的两个目标是:

  • 玩得开心
  • 你的成功

有趣的作为一个严肃项目的目标听起来很奇怪,但这是一个严肃的目标。我发现编写这些GUI程序非常有趣。其中一个原因是编写一个完整的解决方案所需的时间非常短。如果我们不享受这个过程,那么就会有人放弃

这里有大量的文档、一本食谱、100个可让您立即运行的演示程序、详细的通话参考资料、YouTube视频、在线特立尼达演示等等。所有人都在努力创造。有趣的经历

你的成功是一个共同的目标。PySimpleGUI是为开发人员构建的。你们是我的偷窥者。看到用户和PySimpleGUI共同努力的结果是意想不到的回报。使用文档和其他材料帮助构建您的应用程序。如果您遇到麻烦,打开Issue on the PySimpleGUI GitHub请看下面关于支撑的部分


教育资源📚

www.PySimpleGUI.org易于记忆,也是文档所在的位置。您将在顶部找到代表几个不同文档的选项卡。文档位于“Read the Docs”(阅读文档)上,因此每个文档都有一个目录,便于搜索

这里有100页的书面文档和100页的示例程序,它们将帮助您非常迅速地发挥作用。使用PySimpleGUI时,您可以在一个下午完成项目,而不需要几天或几周的投资来学习单个GUI包

示例1-单次窗口

这种类型的程序被称为“一次性”窗口,因为该窗口只显示一次,收集的值,然后关闭。它不会像在文字处理器中那样长时间保持打开状态

一个简单的PySimpleGUI程序剖析

PySimpleGUI程序分为5个部分

import PySimpleGUI as sg # Part 1 - The import # Define the window's contents layout = [  [sg.Text("What's your name?")],     # Part 2 - The Layout
            [sg.Input()],
            [sg.Button('Ok')] ]

# Create the window window = sg.Window('Window Title', layout)      # Part 3 - Window Defintion # Display and interact with the Window event, values = window.read()                   # Part 4 - Event loop or Window.read call # Do something with the information gathered print('Hello', values[0], "! Thanks for trying PySimpleGUI")

# Finish up by removing from the screen window.close()                                  # Part 5 - Close the Window

代码将生成此窗口


示例2-交互窗口

在本例中,我们的窗口将一直显示在屏幕上,直到用户关闭窗口或单击Quit按钮。您在前面看到的单次窗口与交互式窗口之间的主要区别在于增加了“事件循环”。事件循环从您的窗口读取事件和输入。应用程序的核心位于事件循环中

import PySimpleGUI as sg # Define the window's contents layout = [[sg.Text("What's your 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('Hello ' + values['-INPUT-'] + "! Thanks for trying PySimpleGUI")

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

这是示例2生成的窗口

下面是在输入字段中输入值并单击确定按钮后的结果

让我们快速了解一下此示例与单一窗口之间的一些不同之处

首先,您会注意到布局中的不同之处。有两个变化尤其重要。其一是添加了key参数添加到Input元素和一个Text元素。一个key类似于元素的名称。或者,在Python术语中,它就像一个字典键。这个Input元素的键将在稍后的代码中用作字典键

另一个不同之处是增加了这个Text元素:

          [sg.Text(size=(40,1), key='-OUTPUT-')],

有两个参数,即key我们已经调查过了。这个size参数定义元素的大小(以字符为单位)。在这种情况下,我们表示这是Text元素宽40个字符,高1个字符。请注意,没有指定文本字符串,这意味着它将为空。您可以很容易地在创建的窗口中看到此空白行

我们还添加了一个按钮“退出”

Event Loop有我们熟悉的window.read()打电话

以下是Read IF语句:

if event == sg.WINDOW_CLOSED or event == 'Quit':
        break

这段代码检查用户是否通过单击“X”或单击“Quit”按钮关闭了窗口。如果发生这两种情况中的任何一种,则代码将中断事件循环

如果窗口没有关闭,也没有单击Quit按钮,则继续执行。唯一可能发生的事情是用户单击了“确定”按钮。Event Loop中的最后一条语句如下所示:

window['-OUTPUT-'].update('Hello ' + values['-INPUT-'] + "! Thanks for trying PySimpleGUI")

此语句更新Text具有密钥的元素-OUTPUT-用一根绳子。window['-OUTPUT-']查找具有键的元素-OUTPUT-那把钥匙属于我们的空白处Text元素。一旦该元素从查找中返回,那么它的update方法被调用。几乎所有元素都有一个update方法。此方法用于更改元素的值或更改元素的某些配置

如果我们希望文本是黄色的,那么可以通过添加一个text_color参数添加到update方法,以便它读取:

window['-OUTPUT-'].update('Hello ' + values['-INPUT-'] + "! Thanks for trying PySimpleGUI",
                              text_color='yellow')

在添加了text_color参数,这是我们新的结果窗口:

每个元素可用的参数都记录在call reference documentation以及文档字符串。PySimpleGUI提供了大量文档来帮助您了解所有可用的选项。如果您查找update方法,用于Text元素,您将找到该调用的以下定义:

正如您可以看到的,有几件事可以更改为Text元素。调用参考文档是一个有价值的资源,它将使PySimpleGUI、uhm、uhm中的编程变得简单


布局很好笑,哈哈!😆

您的窗口布局是“列表列表”(LOL)。窗户被分解成“行”。窗口中的每一行都会成为布局中的列表。将所有列表连接在一起,您就得到了一个布局。列表列表

这是与以前相同的布局,但增加了一个Text元素添加到每行,以便您可以更轻松地查看行是如何定义的:

layout = [  [sg.Text('Row 1'), sg.Text("What's your name?")],
            [sg.Text('Row 2'), sg.Input()],
            [sg.Text('Row 3'), sg.Button('Ok')] ]

此布局的每一行都是将在窗口的该行上显示的元素列表

与使用其他框架进行GUI编程相比,使用列表定义GUI有一些巨大的优势。例如,您可以使用Python的列表理解功能在一行代码中创建按钮网格

这3行代码:

import PySimpleGUI as sg layout = [[sg.Button(f'{row}, {col}') for col in range(4)] for row in range(4)]

event, values = sg.Window('List Comprehensions', layout).read(close=True)

生成此窗口,该窗口具有4 x 4网格的按钮:

回想一下,“有趣”是该项目的目标之一。直接将Python强大的基本功能应用于GUI问题非常有趣。创建GUI不需要几页代码,只需要几行(通常是1行)代码

折叠代码

可以将窗口的代码压缩为一行代码。布局定义、窗口创建、显示和数据收集都可以用以下代码行编写:

event, values = sg.Window('Window Title', [[sg.Text("What's your name?")],[sg.Input()],[sg.Button('Ok')]]).read(close=True)

将显示相同的窗口,并返回与显示PySimpleGUI程序部分的示例相同的值。能够用这么少的资源做这么多事情,使您能够快速、轻松地将GUI添加到Python代码中。如果您想要显示某些数据并让用户进行选择,可以在一行代码中完成,而不是在一页代码中完成

通过使用速记别名,您可以使用更少的字符来节省更多的代码空间。所有元素都有一个或多个可以使用的较短名称。例如,Text元素可以简单地写为T这个Input元素可以写成I以及Button作为B这样,您的单行窗口代码就变成了:

event, values = sg.Window('Window Title', [[sg.T("What's your name?")],[sg.I()],[sg.B('Ok')]]).read(close=True)

代码可移植性

PySimpleGUI目前能够在4个Python GUI框架上运行。使用IMPORT语句指定要使用的框架。更改导入,您将更改底层GUI框架。对于某些程序,只需更改import语句即可在不同的GUI框架上运行。在上面的示例中,将导入从PySimpleGUIPySimpleGUIQtPySimpleGUIWxPySimpleGUIWeb将会改变框架

导入语句 结果窗口
PySimpleGUI
PySimpleGUIQt
PySimpleGUIWx
PySimpleGUIWeb

将GUI代码从一个框架移植到另一个框架(例如,将代码从tkinter移植到Qt)通常需要重写代码。PySimpleGUI旨在使您能够轻松地在框架之间移动。有时需要进行一些更改,但目标是以最少的更改获得高度可移植的代码

有些功能(如系统托盘图标)并非在所有端口上都可用。系统托盘图标功能在Qt和WxPython端口上可用。在tkinter上有一个模拟版本。PySimpleGUIWeb端口中不支持系统托盘图标

运行时环境

环境 支持
python Python 3.4+
操作系统 Windows、Linux、Mac
硬件 台式PC、笔记本电脑、Raspberry PI、运行PyDroid3的Android设备
在线 repli.it、Trin ket.com(两者都在浏览器中运行tkinter)
GUI框架 tkinter、pyside 2、WxPython、Remi

集成

在200多个“演示程序”中,您可以找到如何将许多流行的Python包集成到您的GUI中的示例

想要将Matplotlib绘图嵌入到您的窗口中吗?没问题,复制演示代码,立即将您的梦想的Matplotlib绘图放到您的GUI中

这些软件包和更多软件包已准备好放入您的GUI中,因为每个软件包都有演示程序或演示回放:

套餐 描述
Matplotlib 多种类型的图表和曲线图
OpenCV 计算机视觉(通常用于人工智能)
VLC 视频播放
金丝雀 物理引擎
Psutil(伪装) 系统环境统计信息
对虾 Reddit API
JSON PySimpleGUI包装了一个特殊的API来存储“用户设置”
天气 集成多个天气API,制作天气应用程序
米多 MIDI播放
美味的汤 Web抓取(GitHub问题观察器示例)

正在安装💾

安装PySimpleGUI的两种常见方式:

  1. 要从PyPI安装的PIP
  2. 下载文件PySimpleGUI.py并将其放入应用程序的文件夹中

PIP安装和升级

当前建议的调用pip命令的方法是使用Python将其作为模块运行。以前的命令是pippip3是直接放到命令行/shell上的。建议的方式

Windows的初始安装:

python -m pip install PySimpleGUI

Linux和MacOS的初始安装:

python3 -m pip install PySimpleGUI

要使用升级,请执行以下操作pip,您只需向该行添加2个参数--upgrade --no-cache-dir

Windows上的升级安装:

python -m pip install --upgrade --no-cache-dir PySimpleGUI

Linux和MacOS升级:

python3 -m pip install --upgrade --no-cache-dir PySimpleGUI

单文件安装

PySimpleGUI被创建为一个单独的.py文件,因此您可以非常容易地安装它,即使是在不像Raspberry PI那样没有连接到互联网的系统上也是如此。只需将PySimpleGUI.py文件放在与导入它的应用程序相同的文件夹中即可。Python在执行导入时将使用您的本地副本

仅使用.py文件进行安装时,您可以从PyPI获取该文件,或者如果要运行最新的未发布版本,则可以从GitHub下载该文件

要从PyPI安装,请下载控制盘或.gz文件并解压缩该文件。如果将.whl文件重命名为.zip,则可以像打开任何普通zip文件一样打开它。您将在其中一个文件夹中找到PySimpleGUI.py文件。将此文件复制到应用程序的文件夹中,即可完成

PySimpleGUI的tkinter版本的PyPI链接为:https://pypi.org/project/PySimpleGUI/#files

GitHub回购的最新版本可在此处找到:https://raw.githubusercontent.com/PySimpleGUI/PySimpleGUI/master/PySimpleGUI.py

现在你们中的一些人在想,“是的,但是,等等,拥有一个巨大的源文件是一个糟糕的想法”。而且,是的,有时候这可能是个糟糕的主意。在这种情况下,好处远远大于坏处。计算机科学中的许多概念都是权衡或主观的。正如一些人所希望的那样,并不是一切都是黑白分明的。很多时候,问题的答案是“视情况而定”。

画廊🎨

用户提交的GUI以及在GitHub上找到的图形用户界面的更正式图库的工作正在进行中,但在撰写本文时还没有完成。目前有2个地方可以集中查看截图。希望维基或其他机制能够很快发布,以公正地对待人们正在进行的令人惊叹的创作

用户提交的库

第一个是一个user submitted screenshots issue位于GitHub上。这是人们炫耀他们所做的东西的一种非正式方式。这不是很理想,但这是一个开始

海量擦除的GitHub图像

第二个是一个massive gallery of over 3,000 images摘自GitHub上据称使用PySimpleGUI的1000个项目。它没有经过手动过滤,而且有很多早期文档中使用的旧屏幕截图。但是,你可能会在那里发现一些能激发你想象力的东西


PySimpleGUI的用法🔨

以下各节展示了PySimpleGUI的一小部分用法。仅在GitHub上就有1000多个项目使用PySimpleGUI。真正令人惊讶的是,为这么多人打开了这样多的可能性。许多用户谈到以前尝试用Python创建GUI都失败了,但是当他们尝试PySimpleGUI时最终实现了他们的梦想

您的第一个GUI

当然,PySimpleGUI最好的用法之一就是让您为Python项目制作GUI。您可以从请求文件名这样的小操作开始。为此,您只需要对一个名为的“高级函数”进行一次调用popup有各种各样的弹出窗口,有些会收集信息

popup在其自身上会生成一个窗口来显示信息。您可以像打印一样传递多个参数。如果您想要获取信息,那么您将调用以popup_get_比如popup_get_filename

添加一行来获取文件名,而不是在命令行上指定文件名,可以将您的程序转换为“普通人”会感到舒服的程序

import PySimpleGUI as sg filename = sg.popup_get_file('Enter the file you wish to process')
sg.popup('You entered', filename)

此代码将显示2个弹出窗口。一个用于获取文件名,该文件名可以浏览到输入框或粘贴到输入框中

img

另一个窗口将输出收集到的内容

img

雨量计式窗户

imgGUI框架的默认设置往往不会产生最美观的窗口。但是,只要注意一些细节,就可以做几件事来使窗口看起来很吸引人。PySimpleGUI使操作颜色和功能(如删除标题栏)变得更容易。其结果是,窗口看起来与典型的tkinter窗口不同

下面是一个示例,说明如何创建与Windows中典型的tkinter不同的窗口。在本例中,窗口的标题栏被删除。其结果是,窗口看起来与使用Raineter(桌面小部件程序)时发现的窗口非常相似

您还可以轻松地设置窗口的透明度。下面是相同Raineter样式的更多桌面小部件示例。有些是暗淡的,因为它们是半透明的。img

这两种效果(移除标题栏和使窗口半透明)都是通过在创建窗口时设置两个参数来实现的。这是一个PySimpleGUI如何支持轻松访问功能的示例。因为PySimpleGUI代码可以跨GUI框架移植,所以这些相同的参数也适用于其他端口,如Qt

将示例1中的窗口创建调用更改为此行代码会生成类似的半透明窗口:

window = sg.Window('My window', layout, no_titlebar=True, alpha_channel=0.5)

游戏

虽然没有专门编写为游戏开发SDK,但PySimpleGUI使某些游戏的开发变得相当容易

img这个象棋程序不仅下棋,而且还集成了Stockfish下棋人工智能

img用户已经发布了几个版本的扫雷器

img

img

纸牌游戏可以很好地与PySimpleGUI配合使用,因为使用PySimpleGUI操作图像非常简单Graph元素

虽然没有专门编写为游戏开发SDK,但PySimpleGUI使某些游戏的开发变得相当容易

媒体捕获和播放

img

在GUI中捕获和显示网络摄像头中的视频只需要4行PySimpleGUI代码。更令人印象深刻的是,这4行代码可以与tkinter、qt和Web端口配合使用。您可以使用与使用tkinter显示图像相同的代码在浏览器中实时显示您的网络摄像头。

媒体播放,音频和视频,也可以使用VLC播放器实现。我们为您提供了一个演示应用程序,这样您就可以从一个可操作的示例开始。您在本自述中看到的所有内容都可以作为您自己创作的起点

人工智能

img

当AI和Python组合在一起时,它们长期以来一直是公认的超级大国。然而,经常缺少的是一种让用户使用GUI熟悉地与这些人工智能算法交互的方式

这些YOLO演示是一个很好的例子,说明了GUI如何在与AI算法的交互中产生巨大的差异。请注意这些窗口底部的两个滑块。这两个滑块更改了YOLO算法使用的几个参数

如果您仅使用命令行调整YOLO演示,则需要在启动应用程序时设置参数一次,查看它们的执行情况、停止应用程序、更改参数,最后使用新参数重新启动应用程序

img

将这些步骤与使用GUI可以完成的操作进行对比。GUI使您能够实时修改这些参数。您可以立即获得有关它们如何影响算法的反馈

img

有这么多已经发布的人工智能程序是命令行驱动的。这本身并不是一个巨大的障碍,但是要在命令行上键入/粘贴您想要着色的文件名,运行程序,然后在文件查看器中打开结果输出文件,这已经够“屁股痛”了

图形用户界面有能力改变用户体验,以填补“图形用户界面空白”。在此着色器示例中,用户只需提供一个装满图像的文件夹,然后单击图像即可上色并显示结果

进行着色的程序/算法是免费提供的,随时可以使用。缺少的是GUI可能带来的易用性


作图

img

使用PySimpleGUI,在GUI中显示数据和与数据交互非常简单。您有几个选择

您可以使用内置的绘图/绘图功能来生成自定义图形。此CPU使用情况监视器使用Graph元素

img

Matplotlib是Python用户的热门选择。PySimpleGUI可以让您将Matplotlib图形直接嵌入到GUI窗口中。如果您想保留Matplotlib交互功能,甚至可以将交互控件嵌入到您的窗口中

img使用PySimpleGUI的颜色主题,您可以生成比大多数人在Matplotlib中创建的默认图表高一个档次的图表


前端

img

前面提到的“GUI差距”可以使用PySimpleGUI轻松解决。您甚至不需要拥有要添加GUI的程序的源代码。“前端”GUI是一种收集信息,然后将这些信息传递给命令行应用程序的图形用户界面

对于程序员来说,前端GUI是分发用户以前不愿使用的应用程序的绝佳方式,因为他们在使用命令行界面时感到不舒服。对于您无权访问其源代码的命令行程序,这些GUI是您唯一的选择

此示例是名为“Jump Cutter”的程序的前端。通过GUI收集参数,使用这些参数构造命令行,然后使用命令行程序的输出将命令执行到GUI界面。在此示例中,您可以看到执行的命令为黄色


覆盆子猪

img

因为PySimpleGUI与Python3.4兼容,所以它能够为您的Raspberry PI项目创建GUI。当它与触摸屏搭配使用时,效果特别好。如果PI没有连接监视器,您还可以使用PySimpleGUIWeb来控制PI


轻松访问高级功能

img

因为很容易访问许多底层GUI框架的功能,所以可以将各种功能拼凑在一起来创建与直接使用GUI框架生成的应用程序完全不同的应用程序

例如,不能使用tkinter或其他GUI包更改标题栏的颜色/外观,但使用PySimpleGUI可以很容易地创建窗口,就好像它们有一个自定义标题栏一样

img

令人难以置信的是,这个窗口正在使用tkinter来实现类似于屏幕保护程序的功能。

在windows上,tkinter可以从你的应用程序中完全移除背景。再一次,PySimpleGUI使访问这些功能变得微不足道。创建透明窗口需要向创建Window只需更改一个参数,即可生成具有以下效果的简单应用程序:

您可以通过单击全屏窗口与桌面上的所有内容进行交互


主题

厌倦了默认的灰色图形用户界面吗?PySimpleGUI只需调用theme功能。有150多种不同的颜色主题可供您选择:

img

对于大多数GUI框架,您必须为您创建的每个小部件指定颜色。PySimpleGUI会自动为元素上色,使其与您选择的主题相匹配

若要使用主题,请调用theme在创建窗口之前使用主题名称函数。您可以添加空格以提高可读性。要将主题设置为“Dark Grey 9”,请执行以下操作:

import PySimpleGUI as sg sg.theme('dark grey 9')

这一行代码完全更改了窗口的外观:

img

主题更改了背景、文本、输入背景、输入文本和按钮颜色的颜色。在其他GUI包中,要像这样更改配色方案,您需要单独指定每个小部件的颜色,这需要对代码进行大量更改


支持💪

你的第一站应该是documentationdemo programs如果您还有问题或需要帮助。没问题。您可以免费获得帮助。简单地说file an Issue在PySimpleGUI GitHub资源库上,您将获得帮助

几乎所有的软件公司都有一个随附错误报告的表格。这是一笔不错的交易。填写表格,即可获得免费软件支持。此信息可帮助您有效地获得答案

除了请求PySimpleGUI和底层GUI框架的版本号等信息外,还向您提供了一份可能帮助您解决问题的项目清单

请填写这张表格你可能会觉得这毫无意义。这可能会感到痛苦,尽管只需要片刻的时间。它可以帮助您更快地获得解决方案。如果它不是帮助你快速回复和修复的有用和必要的信息,你就不会被要求填写它。“帮我帮你”

支持img

我们非常感谢对该项目的财政支持。老实说,经济上的帮助是需要的。光是开着灯就很贵。域名注册、一长串的订阅、咨询帮助等,很快就会累积成一笔可观的经常性成本

PySimpleGUI的创建成本并不低。虽然这是一项热爱的劳动,但在几年的时间里,它是非常辛苦的,而且相当多的投资被投入,并将继续投入,创造出你今天看到的东西。

PySimpleGUI拥有开放源码许可,如果它能保持这种状态,那就太好了。如果您或您的公司(特别是如果您在公司中使用PySimpleGUI)通过使用PySimpleGUI获得经济利益,则您有能力延长您和其他用户的项目生命周期

给我买咖啡

给我买杯咖啡是公开支持开发者的一种很好的方式。它快速、简单,并且您的贡献会被记录下来,这样其他人就可以看到您是PySimpleGUI的支持者。您也可以选择将您的捐赠设置为私人捐赠

Buy Me A Coffee

GitHub赞助商

这个GitHub recurring sponsorship就是如何在持续的基础上以不同级别的支持来赞助该项目。它是指有多少开放源码开发者能够获得企业级赞助

我们将非常感谢您在财政上对该项目的帮助。作为一名开放源码开发人员在财务上具有挑战性。YouTube视频创建者能够通过制作视频谋生。对于开源开发人员来说,这并不容易

谢谢你的谢谢

对于所有帮助过的人,无论以什么方式,我都非常非常感激

即使花点时间说一句“谢谢”也有帮助,而且你们中的很多人都这么做了。事实上,这是一个令人惊叹的数字。我珍视这些感谢,仅从文字中就能找到灵感。每一条信息都是一种小小的推动。它增加了一点能量,保持了整个项目的势头。我非常感谢所有以任何形式帮助过我的人

贡献👷

虽然PySimpleGUI目前是在开放源码许可下获得许可的,但项目本身的结构类似于专有产品。不接受拉取请求

对您来说,贡献代码的最佳方式之一是编写和发布应用程序。用户从看到其他用户构建的内容中获得灵感。这里有一组您可以执行的简单步骤–创建一个GitHub repo,发布代码,并在repo的自述文件中包含一个屏幕截图。然后回到PySimpleGUI资源库,在第10期或项目的Wiki中发布一个屏幕截图

如果缺少您需要的功能,或者您有要建议的增强功能,那么open an Issue

特别感谢🙏

这个版本的PySimpleGUI自述文件如果没有@M4cs他是一位出色的开发人员,自项目启动以来一直是PySimpleGUI的支持者。@israel-dryer是另一个长期的支持者,他已经编写了几个PySimpleGUI程序,推动了包功能的极限。以色列制造了唯一一艘使用图像作为棋盘的扫雷舰。@jason990420当他发布了第一款使用PySimpleGUI的纸牌游戏(如上图所示),以及第一款使用PySimpleGUI制作的扫雷舰游戏时,许多人都大吃一惊。@Chr0nicT是我合作过的最年轻的项目开发人员。这孩子经常让我吃惊。请求一种功能,比如PySimpleGUI GitHub从错误检查机器人发出的问题,不管涉及到什么技术,它都会简单地发生。我很幸运,我们被介绍认识了。总有一天他会被带走,但在那之前我们都受益于他的才华。日文版的自述文件在以下方面的帮助下得到了极大的改进@okajun35@nngogol对该项目产生了非常大的影响,在最初发布的第一年就参与了PySimpleGUI。他编写了一个设计器,提出了熟悉的窗口[键]查找语法,编写了创建文档的工具,设计了第一组文档字符串,以及使用PySimpleGUI代码本身生成在线文档的工具。如果没有这些人的帮助,PySimpleGUI就不会有今天的成就

使用PySimpleGUI的2200多个GitHub回购也应该得到“谢谢”,因为它是这就是推动这个项目引擎的灵感

隔夜在推特上发帖的海外用户是开始一天PySimpleGUI工作的电光。它们一直是让开发引擎启动并准备好每天运行的正能量源泉。为了表示感谢,本自述文件已翻译为Japanese

你们都是开放源码开发人员所希望的最好的用户社区

©版权所有2021 PySimpleGUI

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。