PySimpleGUI的WxPython版本工程预发布版。PySimpleGUI SDK于2018年推出,积极开发和支持。创建自定义GUI非常简单。现在支持tkinter、Qt、WxPython和Remi。
项目描述
PySimpleGUIWx
PySimpleGUI的WxPython端口
PySimpleGUI的主要文档
要了解如何使用PySimpleGUI的API,请参考主要文档。本README仅提供有关PySimpleGUI WxPython端口的信息。
为什么使用PySimpleGUIWx而不是其他端口?
PySimpleGUIWx将PySimpleGUI端口的数量增加到3个。
为什么使用PySimpleGUIWx而不是PySimpleGUIQt(tkinter版本)?
有几个简单的原因使用PySimpleGUIWx而不是PySimpleGUIQt。一个是体积。PySimpleGUIWx的PyInstaller EXE为9MB,而Qt为240MB。另一个是酷炫的控件。
WxPython有一些漂亮的先进控件,将通过PySimpleGUIWx提供,希望尽快实现。
系统托盘功能与PySimpleGUIQt具有相同的功能集,工作良好。如果您正在寻找系统托盘功能,PySimpleGUIWx比PySimpleGUIQt更推荐;主要原因是WxPython框架与Qt的大小。它们都为您提供非常相似的功能。在使用PySimpleGUI时,它们看起来和表现都一样。这就是PSG SDK的美丽之处,所有PySimpleGUI实现的函数调用都是相同的。源代码在GUI框架之间高度可移植。
这个简单的列表是另一种看待问题的方法...
- 编写GUI简单且容易
- 您可以通过更改单行代码(导入语句)在tkinter、Qt和WxPython之间切换GUI框架。
- 获得相同的自定义布局和相同的控件访问权限,但界面简单、易于使用和理解。
- 再次编写GUI很有趣
工程预发布版本0.13.0
遇到问题?请访问GitHub站点并提交问题。
哪些功能工作
记住,这些都是工程发布。并非所有功能都已完成,但一般来说,已标记为完成并正常工作的功能工作得很好。这不是“工程品质”。完成的功能大约在Beta级别。
准备好使用
元素
- 文本
- 输入文本
- 按钮包括文件/文件夹浏览
- 多行输入
- 多行输出
- 输出
- 列
- 框架 - 除了还不能设置颜色
- 进度条
- 复选框
- 单选按钮
- 组合框
- 旋转按钮
- 垂直和水平分隔符
功能
- 系统托盘
- 调试打印
- 不可见/可见元素
- 所有弹出窗口
- 复选框
- 键盘按键事件
- 鼠标滚轮事件
- 多个窗口
- 带超时的读取
- 背景图像
- 单行进度条(tm)
- 自动关闭窗口
- 无标题栏窗口
- 在任何位置抓取窗口
- Alpha通道
- 窗口大小
- 窗口消失/出现
- 获取屏幕大小
- 获取窗口位置
- 更改窗口大小
- 窗口移动
- 窗口最小化
- 窗口最大化
- 窗口禁用
- 窗口启用
- 窗口隐藏
- 窗口取消隐藏
- 窗口置于最前
- 外观和感觉设置
- 默认图标
- Base64图标
- 所有元素方法和函数的PEP8绑定
对这些进行测试并遇到错误不会花太多时间。例如,按钮更新的代码尚未完成。您大多数时间不会这样做。
由于开发团队规模较小,功能可能暂时感觉有点“单薄”。目标是实现足够的深度,以涵盖80%的使用。这是一种多遍迭代的方法。
如果您,作为读者,遇到了问题或遇到了尚未实现的地方,请打开一个 Issue。这些问题通常在一天内就能完成。用户不断推动边界的过程是推动开发优先级的原因。正是“现实世界”的问题让 PySimpleGUI 成为了今天的它。
系统托盘
这是 PySimpleGUIWx 的第一个完全功能性的特性。之前只有 Qt 版本支持系统托盘。为什么使用 Wx?它的占用空间小得多。使用 PyInstaller 创建的 EXE 文件,PySimpleGUIWx 为 9 MB,而使用 Qt 时为 240 MB。
现在,您可以为您的 PySimpleGUI 应用程序“附加”系统托盘。
如果您无法升级到 Qt 但想要系统托盘功能,那么将 PySimpleGUIWx 添加到您的项目中可能是一个不错的选择。
您可以通过为 Window.Read 调用和 SystemTray.Read 调用添加超时来混合系统托盘的事件循环和正常窗口的事件循环。
源代码兼容性
PySimpleGUIWx 的系统托盘功能已经与相同的 PySimpleGUIQt 功能进行了测试。只要您不使用尚未支持的功能,您就会发现通过更改导入语句,您的源代码可以在 PySimpleGUIQt 或 PySimpleGUIWx 上运行。
系统托盘设计模式
这里有一个设计模式可以帮助您快速上手。
此程序将创建一个系统托盘图标并执行阻塞式读取。
import PySimpleGUIWx as sg
tray = sg.SystemTray(menu= ['menu',['Open', ['&Save::KEY', '---', 'Issues', '!Disabled'], 'E&xit']],
filename=r'C:\Python\PycharmProjects\PSG\default_icon.ico')
tray.ShowMessage('My Message', 'The tray icon is up and runnning!')
while True:
event = tray.Read()
print(event)
if event == 'Exit':
break
菜单定义
请参阅 PySimpleGUI 的原始完整文档,以了解如何定义菜单。
系统托盘方法
Read - 读取上下文菜单或检查事件
def Read(timeout=None)
'''
Reads the context menu
:param timeout: Optional. Any value other than None indicates a non-blocking read
:return: String representing meny item chosen. None if nothing read.
'''
timeout
参数指定等待事件发生的时间。如果在超时期间没有任何事件发生,则返回“超时事件”。这些类型的读取可以实现异步运行。要运行非阻塞,请在 Read 调用中指定 timeout=0
(尚不支持)。
Read 返回被选中菜单项的文本,包括键。如果您将 Open::key
作为菜单项指定,并且用户单击了 Open
,则在 Read 完成后您将收到字符串 Open::key
。
Read 特殊返回值
除了菜单项之外,Read 调用还可以返回几个特殊值。它们包括
EVENT_SYSTEM_TRAY_ICON_DOUBLE_CLICKED - 托盘图标被双击
ShowMessage
就像 Qt 一样,您可以创建一个弹出消息。与 Qt 不同的是,您无法在消息中设置自己的自定义图标,至少目前不能。
预设的 messageicon
值是
SYSTEM_TRAY_MESSAGE_ICON_INFORMATION
SYSTEM_TRAY_MESSAGE_ICON_WARNING
SYSTEM_TRAY_MESSAGE_ICON_CRITICAL
SYSTEM_TRAY_MESSAGE_ICON_NOICON
ShowMessage(title, message, filename=None, data=None, data_base64=None, messageicon=None, time=10000):
'''
Shows a balloon above icon in system tray
:param title: Title shown in balloon
:param message: Message to be displayed
:param filename: Optional icon filename
:param data: Optional in-ram icon
:param data_base64: Optional base64 icon
:param time: How long to display message in milliseconds :return:
'''
更新
您可以在 SystemTray 对象内更新这些项中的任何一项
- 菜单定义
- 图标(尚未启用)
- 工具提示
全部更改或只更改一个。
Update(menu=None, tooltip=None,filename=None, data=None, data_base64=None,)
'''
Updates the menu, tooltip or icon
:param menu: menu defintion
:param tooltip: string representing tooltip
:param filename: icon filename
:param data: icon raw image
:param data_base64: icon base 64 image
:return:
'''
带键的菜单
您可以为菜单项添加一个键。为此,您需要将 :: 和键值添加到菜单定义的末尾。
menu_def = ['File', ['Hide::key', '&Open::key', '&Save',['1', '2', ['a','b']], '&Properties', 'E&xit']]
菜单定义给 Hide 和 Open 添加了一个键 "key"。
如果您想更改分隔符字符从 :: 修改为其他内容,请更改变量 MENU_KEY_SEPARATOR
。
当菜单项具有键并被选中时,则返回整个字符串。如果选中了 Hide,则 Read 会返回 Hide::key。请注意,快捷字符 & 不会被 Read 返回。
弹出窗口
从0.4.0版本开始,大多数弹出功能正常工作。这意味着您可以在系统托盘菜单中做出选择时在窗口中显示信息。或者如果您的程序发现了一些希望通知用户的事件。例如,当GitHub项目上发布了新问题。
发行说明
0.1.0 - 2018年12月25日
- 支持系统托盘
- 读取,带或不带超时
- 捕获单击、双击事件
- 源代码与Qt兼容
0.2.0 - 2018年12月26日
- 正确处理base64图像
- 支持点击消息气球
- 可以隐藏和显示图标
0.3.0 - 2018年12月27日
- 连接按钮!
- 浏览文件按钮是唯一正常工作的文件/文件夹按钮
- 文本、输入和按钮元素是唯一正常工作的元素
- 系统托盘可以使用任何类型的图像作为图标
- 带超时(非零)的读取正常工作
- 弹出窗口
0.4.0 PySimpleGUIWx 2018年12月30日
- 文本元素 - 颜色、字体正常工作
- 文本更新方法正常工作
- 按钮 - 实现了关闭按钮
- 按钮 - 实现了基本按钮,正确地展示了读取的值
- 按钮 - 现在可以设置字体
- 改进了整体“App”变量的使用,以更好地控制主循环
- Windows - 超时和非阻塞读取正常工作
- Windows - 自动关闭正常工作
- Windows - 支持非阻塞调用(超时=0)
- Windows - 任何位置抓取正常工作
- Windows - 无标题栏正常工作
- Windows - 位置和大小正常工作
- 正确添加到文本、输入、按钮的元素填充
- 弹出窗口 - 大多数弹出窗口正常工作(除涉及文件夹的输入类型外)
0.5.0 PySimpleGUIWx 2019年1月6日
- 新元素 - 多行输入
- 新元素 - 多行输出
- 无边框窗口
- 在任何位置抓取窗口
- 窗口的alpha通道
- 完成文本和输入文本元素
- 所有元素的可见性
- 输入获取/设置焦点
- 输出元素 - 无法将stdout重新路由
- 调试窗口正常工作
0.6.0 2019年1月9日
- 列元素
- 复选框元素带有事件
- 输出元素
- 背景图像(我想是正常的)
- 调试打印
- 一行进度条
- 所有弹出窗口正常工作
0.7.0 PySimpleGUIWx 2019年1月21日
- 元素.Update对禁用和工具提示的支持
- 组合元素
- 最新的组合参数
- 单选按钮元素
- 最新的单选按钮参数(size_px、visible、enable_events)
- 在Wx小部件上添加类型提示
- 旋转器元素
- 最新的旋转器参数
- 文本元素可见性
- 列元素size_px参数(不清楚是否工作...可能不工作)
- 列可见性
- 添加了列更新方法
- 系统托盘 - 支持任何类型的图像格式作为图标
- 窗口.Move
- 窗口.Minimize
- 窗口.Maximize
- 窗口.Disable
- 窗口.Enable
- 窗口.Hide
- 窗口.UnHide
- 窗口.BringToFront
- 弹出窗口非阻塞 - 返回窗口和按钮,而不仅仅是按钮
- 在运行PySimpleGUIWx.py时提供更全面的测试框架
0.8.0 2019年2月20日 PySimpleGUIWx
- 在多行Update方法周围添加了大Try/Except块,以防窗口关闭
- 文本 - 立即将传入的文本转换为字符串
- Text.Update - 将传入的值转换为字符串
- 完成Button.Update方法。现在可以更改文本、颜色等。
- 在读取多行输入值时添加了Try - 不确定为什么需要
- OneLineProgressMeter - 现在可以在每次调用时更新文本
0.9.0 2019年3月6日 PySimpleGUIWx
- 添加了断言抑制
- 这需要一个多线程版本的PySimpleGUIWx
- 如果没有进行此更改并在线程中运行托盘,则退出系统托盘时会发出抱怨
- Tray.Close现在可以正确隐藏图标
- SetGlobalIcon功能正常
- 现在也可以使用SetOptions调用设置图标
0.10.0 2019年3月23日 PySimpleGUIWx
do_not_clear
现在在输入和多行元素上默认为TRUE!!
0.11.0 2019年4月11日 PySimpleGUIWx
- 新的窗口参数布局,因此可以跳过调用Layout
0.13.0 1-OCT-2019 PySimpleGUIWx
- 使用sg.version字符串进行版本编号
- PEP8绑定!
- 改进了多行元素的字符到像素大小的缩放
- 为所有元素添加了元数据变量
- 将元素回调函数重命名为以_开头
- 除了输出元素外,所有地方都移除了
方法 - 可以“调用”一个元素,这将调用其Update方法
- InputText元素 - 将默认文本和密码字符转换为字符串
- 移除了旧的代码,例如tkinter的tooltip和Qt的拖放
- 输入文本元素的快捷键I
- 列表框添加了size_px参数
- 将类型检查更改为使用注释样式类型
- 将Element.Widget添加到所有元素中,以便可以直接访问Wx小部件
- 文本元素现在默认为'',因此如果是一个空白的文本元素(通常用于输出),则无需指定任何内容
- 在创建按钮时将按钮文本转换为字符串
- 新的按钮快捷键 - B,Btn
- 垂直分隔符 - 新支持的元素
- 水平分隔符 - 新支持的元素
- 滑块 - 添加了size_px参数
- 修复了由于系统托盘未清理计时器而导致的泄漏
- 窗口 - 添加了finalize参数,因此可以跳过使用链式.Finalize()
- 窗口 - AllKeysDict现在像其他PySimpleGUI端口一样使用。包含窗口中的所有键和元素
- Window.FindElement - 添加了silent_on_error参数,就像其他端口一样
- Window[key]构造函数添加了调用FindElement
- window() - 可以“调用”您已创建的窗口。将调用Window.Read()
- 弹出按钮不再使用CloseButtons进行正常弹出。手动调用window.Close
- PopupGetFolder更改为使用键、正常按钮、新的窗口设计模式
- PopupGetFile更改为使用键、正常按钮、新的窗口设计模式
- PopupGetText更改为使用键、正常按钮、新的窗口设计模式
- 默认应用程序(PySimpleGUI.main)现在显示版本号,就像其他PySimpleGUI端口一样
0.13.0 17-Nov-2019 PySimpleGUIWx
- 提供105种外观和感觉主题可供选择!
- 新的“模糊”外观和感觉选择
- 由于缺乏框架支持,目前无法预览所有外观和感觉
0.15.0 PySimpleGUIWx 24-Dec-2019
主题!
- 获取了所有端口都有的新“主题”API
- 深蓝色3是PySimpleGUI的新官方颜色主题
- 添加了“port”字符串,以便您的代码可以检测正在执行PySimpleGUI的哪个端口
- 移除了对Mac的限制(它完全不合逻辑,因为它阻止了一个tkinter问题,而不是一个Wx问题)
- 弃用了TRANSPARENT_BUTTON变量,因为它被用户误解,具有误导性
- BROWSE_FILES_DELIMITER可以更改,以更改文件浏览按钮中文件名之间的默认分号分隔符
- 框架元素!但是,它只是一个部分解决方案,因为我无法设置背景颜色(需要了解面板的工作方式)。比没有好
0.16.0 PySimpleGUIWx 6-May-2020
- 添加了常量
- WIN_CLOSED和WINDOW_CLOSED
- EVENT_TIMEOUT和TIMEOUT_EVENT
- 添加了Graph.change_coordinates方法
- 添加了Window.read的close参数
0.17.0 PySimpleGUIWx 6-Jun-2020
窗口和容器内的元素对齐!最终实现了统一的对齐
- 当任何单选按钮元素更新为False时,整个GROUP都会重置,因此没有任何内容被选中
- 添加了element_justification,以便所有这些元素内部的所有元素都将相应地对齐。
- 对于PySimpleGUIQt来说,默认值为“float”,这设置为无。按钮将延伸到窗口
- 有效的值是'l'、'r'、'c'。您可以将其拼写出来,但只有第一个字母被使用。
- 窗口
- 框架
- 列
- 选项卡
0.17.1 PySimpleGUIWx 7-Jun-2020
- 对Multiline.update进行快速修复,以便正确识别换行符
设计
作者
Mike B.
许可证
GNU Lesser General Public License (LGPL 3) +
致谢
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
构建分发
PySimpleGUIWx-0.17.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 910d6c1a0e472b8cef02cb9200428d55d930129eb4685106b8df0345d284e9bd |
|
MD5 | e144f36e8392377b136b9cbb23574d3f |
|
BLAKE2b-256 | fff2acc5aa024c99bbcc3dab3b3944427fda9ade1db8ede90aa94b9070423185 |
PySimpleGUIWx-0.17.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 393f0e69a33d0702c5f4f10c0576811d6b5194d3e5060c95aca4fc6eb8d5e645 |
|
MD5 | bc72ed7d8d48cf0f3e7137adfd2609d5 |
|
BLAKE2b-256 | 392021143c1304617050682a2f02b2eeb98c1c9f8acdb5b1f944e748df3b00d2 |