跳转到主要内容

永久免费的Python GUI框架。

项目描述

free_simplegui_logo

PyPI Version

FreeSimpleGUIWx

FreeSimpleGUI的WxPython端口

主要FreeSimpleGUI文档

要获取如何使用FreeSimpleGUI的API的说明,请参考主要文档。此Readme是为FreeSimpleGUI的WxPython端口的特定信息。

为什么使用FreeSimpleGUIWx而不是其他端口?

FreeSimpleGUIWx将FreeSimpleGUI的端口数量增加到3个。

为什么使用FreeSimpleGUIWx而不是FreeSimpleGUIQt FreeSimpleGUI(tkinter版本)?

有几个简单的原因说明为什么使用FreeSimpleGUIWx比FreeSimpleGUIQt更合适。一个是因为占用空间小。FreeSimpleGUIWx的PyInstaller EXE大小为9 MB,而Qt的为240 MB。另一个原因是Cool小部件。

WxPython有一些很好的高级小部件,将通过FreeSimpleGUIWx提供,希望尽快提供。

系统托盘功能与FreeSimpleGUIQt具有相同的功能集,运行良好。如果您正在寻找系统托盘功能,建议使用FreeSimpleGUIWx而不是FreeSimpleGUIQt;主要原因在于WxPython框架与Qt的大小差异。它们都提供了非常相似的功能。在使用FreeSimpleGUI时,它们的看起来和行为是完全相同的。这就是PSG SDK的美丽之处,所有FreeSimpleGUI的实现都具有相同的函数调用。源代码在GUI框架之间高度可移植。

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

  1. 编写GUI很简单,也很容易
  2. 您可以通过更改一行代码(导入语句)在tkinter、Qt和WxPython GUI框架之间进行切换。
  3. 获取相同的自定义布局和访问相同的控件,但界面简单、易于使用和理解。
  4. 再次编写GUI很有趣

什么工作

记住,这些都是工程版本。并非所有功能都完整,但一般来说,那些标记为完成且正常工作的功能运行得相当不错。这不是“工程品质”。完成的功能大约处于Beta级别。

准备使用

元素

  • 文本
  • 输入文本
  • 按钮,包括文件/文件夹浏览
  • 多行输入
  • 多行输出
  • 输出
  • 框架 - 但目前不能设置颜色
  • 进度条
  • 复选框
  • 单选按钮
  • 组合框
  • 微调器
  • 垂直和水平分隔符

功能

  • 系统托盘
  • 调试打印
  • 不可见/可见元素
  • 所有弹出窗口
  • 复选框
  • 键盘按键事件
  • 鼠标滚轮事件
  • 多个窗口
  • 带超时的读取
  • 背景图像
  • 单行进度条(tm)
  • 自动关闭窗口
  • 无标题栏窗口
  • 任何位置的抓取窗口
  • 透明度通道
  • 窗口大小
  • 窗口消失/出现
  • 获取屏幕大小
  • 获取窗口位置
  • 更改窗口大小
  • 窗口移动
  • 窗口最小化
  • 窗口最大化
  • 窗口禁用
  • 窗口启用
  • 窗口隐藏
  • 窗口取消隐藏
  • 窗口置前
  • 外观和感觉设置
  • 默认图标
  • Base64图标
  • 所有元素方法和函数的PEP8绑定

对这些功能进行尝试并出错不会花费太多时间。例如,更新按钮的代码并不完整。您大部分时间不会这样做。

由于开发团队规模较小,功能可能感觉“有点单薄”。想法是实现足够深入,以覆盖80%的使用情况。这是一个多遍、迭代的策略。

如果您,作为读者,遇到问题或遇到尚未实现的功能,请提交一个Issue。它们通常在一天内完成。用户推动边界的过程推动了开发优先级。这是使FreeSimpleGUI成为今天这个样子的“现实世界”问题。

SystemTray

这是FreeSimpleGUIWx的第一个完全功能特性。以前只有Qt端口支持系统托盘。为什么使用Wx?它的占用空间小得多。使用PyInstaller创建的EXE文件,FreeSimpleGUIWx为9 MB,而使用Qt时为240 MB。

现在可以将系统托盘“附加”到您的FreeSimpleGUI应用程序中。

如果您无法升级到Qt但想要系统托盘功能,那么将FreeSimpleGUIWx添加到项目中可能是正确的方法。

您可以通过为Window.Read调用和SystemTray.Read调用添加超时时间,将系统托盘的事件循环与正常窗口的事件循环混合。

源代码兼容性

FreeSimpleGUIWx的系统托盘功能已与FreeSimpleGUIQt的相同功能进行了测试。只要您不使用尚未支持的功能,您会发现通过更改导入语句,源代码可以在FreeSimpleGUIQt或FreeSimpleGUIWx上运行。

系统托盘设计模式

以下是一个您可以使用的设计模式来快速入门。

此程序将创建一个系统托盘图标并执行阻塞的Read。

import FreeSimpleGUIWx as sg

tray = sg.SystemTray(menu=['menu', ['Open', ['&Save::KEY', '---', 'Issues', '!Disabled'], 'E&xit']],
                     filename=r'C:\Python\PycharmProjects\GooeyGUI\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

菜单定义

要了解菜单是如何定义的,请参阅FreeSimpleGUI的原始完整文档。

SystemTray方法

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']]

菜单定义将键“key”添加到菜单项Hide和Open中。

如果您想将分隔符字符从::更改为其他字符,请更改变量MENU_KEY_SEPARATOR

当菜单项具有键并且被选中时,将返回整个字符串。如果选择了Hide,则从Read返回Hide::key。请注意,快捷字符&t;不会从Read返回。

许可证

GNU Lesser General Public License (LGPL 3) +

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

FreeSimpleGUIWx-1.0.0.tar.gz (69.7 kB 查看哈希值)

上传时间

构建分布

FreeSimpleGUIWx-1.0.0-py3-none-any.whl (68.4 kB 查看哈希值)

上传于 Python 3

由以下提供支持