用于人类的Python图形用户界面
将tkinter、Qt、WxPython和REMI(基于浏览器)GUI框架转换为更简单的界面。通过使用初学者理解的Python核心数据类型(列表和字典)简化了窗口定义。通过将事件处理从基于回调的模型更改为消息传递模型,可以进一步简化
您的代码不是必填项 具有面向对象的体系结构,使包可以被更多的受众使用。虽然体系结构很容易理解,但它并不容易理解。必然 限制您只处理简单的问题
但是,有些程序并不能很好地适用于PySimpleGUI。根据定义,PySimpleGUI实现底层GUI框架功能的子集。很难准确定义哪些程序适合PySimpleGUI,哪些不适合。这取决于你的计划的细节。复制Excel的每一个细节就是不太适合PySimpleGUI的一个例子
Japanese version of this readme
我想喝杯咖啡!它支持顾问、编辑、域名注册和PySimpleGUI成为一个蓬勃发展的项目所需的许多其他东西。每一笔捐款都是有帮助的,我们需要并感激帮助。
统计数据📈
PyPI统计信息和版本
Tk
TK 2.7
Qt
WxPython
网络(REMI)
GitHub统计信息
什么是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框架上运行。在上面的示例中,将导入从PySimpleGUI
至PySimpleGUIQt
,PySimpleGUIWx
,PySimpleGUIWeb
将会改变框架
导入语句
结果窗口
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的两种常见方式:
要从PyPI安装的PIP
下载文件PySimpleGUI.py并将其放入应用程序的文件夹中
PIP安装和升级
当前建议的调用pip
命令的方法是使用Python将其作为模块运行。以前的命令是pip
或pip3
是直接放到命令行/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个弹出窗口。一个用于获取文件名,该文件名可以浏览到输入框或粘贴到输入框中
另一个窗口将输出收集到的内容
雨量计式窗户
GUI框架的默认设置往往不会产生最美观的窗口。但是,只要注意一些细节,就可以做几件事来使窗口看起来很吸引人。PySimpleGUI使操作颜色和功能(如删除标题栏)变得更容易。其结果是,窗口看起来与典型的tkinter窗口不同
下面是一个示例,说明如何创建与Windows中典型的tkinter不同的窗口。在本例中,窗口的标题栏被删除。其结果是,窗口看起来与使用Raineter(桌面小部件程序)时发现的窗口非常相似
您还可以轻松地设置窗口的透明度。下面是相同Raineter样式的更多桌面小部件示例。有些是暗淡的,因为它们是半透明的。
这两种效果(移除标题栏和使窗口半透明)都是通过在创建窗口时设置两个参数来实现的。这是一个PySimpleGUI如何支持轻松访问功能的示例。因为PySimpleGUI代码可以跨GUI框架移植,所以这些相同的参数也适用于其他端口,如Qt
将示例1中的窗口创建调用更改为此行代码会生成类似的半透明窗口:
window = sg .Window ('My window' , layout , no_titlebar = True , alpha_channel = 0.5 )
游戏
虽然没有专门编写为游戏开发SDK,但PySimpleGUI使某些游戏的开发变得相当容易
这个象棋程序不仅下棋,而且还集成了Stockfish下棋人工智能
用户已经发布了几个版本的扫雷器
纸牌游戏可以很好地与PySimpleGUI配合使用,因为使用PySimpleGUI操作图像非常简单Graph
元素
虽然没有专门编写为游戏开发SDK,但PySimpleGUI使某些游戏的开发变得相当容易
媒体捕获和播放
在GUI中捕获和显示网络摄像头中的视频只需要4行PySimpleGUI代码。更令人印象深刻的是,这4行代码可以与tkinter、qt和Web端口配合使用。您可以使用与使用tkinter显示图像相同的代码在浏览器中实时显示您的网络摄像头。
媒体播放,音频和视频,也可以使用VLC播放器实现。我们为您提供了一个演示应用程序,这样您就可以从一个可操作的示例开始。您在本自述中看到的所有内容都可以作为您自己创作的起点
人工智能
当AI和Python组合在一起时,它们长期以来一直是公认的超级大国。然而,经常缺少的是一种让用户使用GUI熟悉地与这些人工智能算法交互的方式
这些YOLO演示是一个很好的例子,说明了GUI如何在与AI算法的交互中产生巨大的差异。请注意这些窗口底部的两个滑块。这两个滑块更改了YOLO算法使用的几个参数
如果您仅使用命令行调整YOLO演示,则需要在启动应用程序时设置参数一次,查看它们的执行情况、停止应用程序、更改参数,最后使用新参数重新启动应用程序
将这些步骤与使用GUI可以完成的操作进行对比。GUI使您能够实时修改这些参数。您可以立即获得有关它们如何影响算法的反馈
有这么多已经发布的人工智能程序是命令行驱动的。这本身并不是一个巨大的障碍,但是要在命令行上键入/粘贴您想要着色的文件名,运行程序,然后在文件查看器中打开结果输出文件,这已经够“屁股痛”了
图形用户界面有能力改变用户体验 ,以填补“图形用户界面空白”。在此着色器示例中,用户只需提供一个装满图像的文件夹,然后单击图像即可上色并显示结果
进行着色的程序/算法是免费提供的,随时可以使用。缺少的是GUI可能带来的易用性
作图
使用PySimpleGUI,在GUI中显示数据和与数据交互非常简单。您有几个选择
您可以使用内置的绘图/绘图功能来生成自定义图形。此CPU使用情况监视器使用Graph
元素
Matplotlib是Python用户的热门选择。PySimpleGUI可以让您将Matplotlib图形直接嵌入到GUI窗口中。如果您想保留Matplotlib交互功能,甚至可以将交互控件嵌入到您的窗口中
使用PySimpleGUI的颜色主题,您可以生成比大多数人在Matplotlib中创建的默认图表高一个档次的图表
前端
前面提到的“GUI差距”可以使用PySimpleGUI轻松解决。您甚至不需要拥有要添加GUI的程序的源代码。“前端”GUI是一种收集信息,然后将这些信息传递给命令行应用程序的图形用户界面
对于程序员来说,前端GUI是分发用户以前不愿使用的应用程序的绝佳方式,因为他们在使用命令行界面时感到不舒服。对于您无权访问其源代码的命令行程序,这些GUI是您唯一的选择
此示例是名为“Jump Cutter”的程序的前端。通过GUI收集参数,使用这些参数构造命令行,然后使用命令行程序的输出将命令执行到GUI界面。在此示例中,您可以看到执行的命令为黄色
覆盆子猪
因为PySimpleGUI与Python3.4兼容,所以它能够为您的Raspberry PI项目创建GUI。当它与触摸屏搭配使用时,效果特别好。如果PI没有连接监视器,您还可以使用PySimpleGUIWeb来控制PI
轻松访问高级功能
因为很容易访问许多底层GUI框架的功能,所以可以将各种功能拼凑在一起来创建与直接使用GUI框架生成的应用程序完全不同的应用程序
例如,不能使用tkinter或其他GUI包更改标题栏的颜色/外观,但使用PySimpleGUI可以很容易地创建窗口,就好像它们有一个自定义标题栏一样
令人难以置信的是,这个窗口正在使用tkinter来实现类似于屏幕保护程序的功能。
在windows上,tkinter可以从你的应用程序中完全移除背景。再一次,PySimpleGUI使访问这些功能变得微不足道。创建透明窗口需要向创建Window
只需更改一个参数,即可生成具有以下效果的简单应用程序:
您可以通过单击全屏窗口与桌面上的所有内容进行交互
主题
厌倦了默认的灰色图形用户界面吗?PySimpleGUI只需调用theme
功能。有150多种不同的颜色主题可供您选择:
对于大多数GUI框架,您必须为您创建的每个小部件指定颜色。PySimpleGUI会自动为元素上色,使其与您选择的主题相匹配
若要使用主题,请调用theme
在创建窗口之前使用主题名称函数。您可以添加空格以提高可读性。要将主题设置为“Dark Grey 9”,请执行以下操作:
import PySimpleGUI as sg
sg .theme ('dark grey 9' )
这一行代码完全更改了窗口的外观:
主题更改了背景、文本、输入背景、输入文本和按钮颜色的颜色。在其他GUI包中,要像这样更改配色方案,您需要单独指定每个小部件的颜色,这需要对代码进行大量更改
支持💪
你的第一站应该是documentation 和demo programs 如果您还有问题或需要帮助。没问题。您可以免费获得帮助。简单地说file an Issue 在PySimpleGUI GitHub资源库上,您将获得帮助
几乎所有的软件公司都有一个随附错误报告的表格。这是一笔不错的交易。填写表格,即可获得免费软件支持。此信息可帮助您有效地获得答案
除了请求PySimpleGUI和底层GUI框架的版本号等信息外,还向您提供了一份可能帮助您解决问题的项目清单
请填写这张表格 你可能会觉得这毫无意义。这可能会感到痛苦,尽管只需要片刻的时间。它可以帮助您更快地获得解决方案。如果它不是帮助你快速回复和修复的有用和必要的信息,你就不会被要求填写它。“帮我帮你”
支持
我们非常感谢对该项目的财政支持。老实说,经济上的帮助是需要的。光是开着灯就很贵。域名注册、一长串的订阅、咨询帮助等,很快就会累积成一笔可观的经常性成本
PySimpleGUI的创建成本并不低。虽然这是一项热爱的劳动,但在几年的时间里,它是非常辛苦的,而且相当多的投资被投入,并将继续投入,创造出你今天看到的东西。
PySimpleGUI拥有开放源码许可,如果它能保持这种状态,那就太好了。如果您或您的公司(特别是如果您在公司中使用PySimpleGUI)通过使用PySimpleGUI获得经济利益,则您有能力延长您和其他用户的项目生命周期
给我买咖啡
给我买杯咖啡是公开支持开发者的一种很好的方式。它快速、简单,并且您的贡献会被记录下来,这样其他人就可以看到您是PySimpleGUI的支持者。您也可以选择将您的捐赠设置为私人捐赠
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