永久免费的Python GUI框架。
项目描述
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框架之间高度可移植。
这个简单的列表是看待问题的另一种方式....
- 编写GUI很简单,也很容易
- 您可以通过更改一行代码(导入语句)在tkinter、Qt和WxPython GUI框架之间进行切换。
- 获取相同的自定义布局和访问相同的控件,但界面简单、易于使用和理解。
- 再次编写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) +
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。