跳转到主要内容

PySimpleGUI的WxPython版本工程预发布版。PySimpleGUI SDK于2018年推出,积极开发和支持。创建自定义GUI非常简单。现在支持tkinter、Qt、WxPython和Remi。

项目描述

pysimplegui_logo

Downloads

Awesome Meter

Python Version

PyPI Version

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框架之间高度可移植。

这个简单的列表是另一种看待问题的方法...

  1. 编写GUI简单且容易
  2. 您可以通过更改单行代码(导入语句)在tkinter、Qt和WxPython之间切换GUI框架。
  3. 获得相同的自定义布局和相同的控件访问权限,但界面简单、易于使用和理解。
  4. 再次编写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 (76.9 kB 查看哈希值)

上传时间 源代码

构建分发

PySimpleGUIWx-0.17.2-py3-none-any.whl (71.2 kB 查看哈希值)

上传时间 Python 3

由以下支持