A simple tool to create events to PySimpleGUI or FreeSimpleGUI
Project description
介绍
基于PySimpleGUI的一个简单的事件循环库
WHY
为啥要搞这玩意,这玩意具体是用来干嘛的? 在GUI开发中肯定会遇到事件以及事件调用的函数,这个在pysimplegui里面使用的并不好,以下是一个例子
if 事件 == "指定按钮":
do_something()
以上需要写很多冗长的if else 语句,而本库则提供了一种更简单的方法,只需要编写一个函数,然后在这个函数上使用装饰器,就可以实现事件的函数的绑定
@app.bind_event('事件名')
def do_something():
pass
版本兼容性
python3.4以上,WindowsXP 以上的Windows系统都可以用,其他系统未测试
特别说明
事件绑定和事件函数的有点问题,只能接受以下四种形式
- func(),这种无参数函数
- func(values=),这种关键字参数函数,只有一个参数是值
- func(window=),这种关键字参数函数,只有一个参数是窗口
- func(window=,values=),这种关键字参数函数,参数只有窗口和值,顺序无所谓
使用方法
import PySimpleGUI as sg
from pyguievent import PySimpleEvent
sg.theme("DefaultNoMoreNagging")
app = PySimpleEvent()
def make_main_window() -> sg.Window:
task_list = [
sg.Frame(
"Tasks",
[
[sg.Input(key="lot1", tooltip="此输入栏输入即事件触发", enable_events=True)],
[sg.Input(key="lot2", tooltip="此输入框输入后使用回车事件触发")],
[sg.B("win_fun"), sg.B("val_fun")],
[
sg.B("win_val_fun"),
sg.B("no_arg_fun"),
],
[sg.Text("", key="lot3")],
[sg.Text("", key="lot4")],
],
size=(400, 200),
)
]
status_bar = [
sg.StatusBar("版本:"),
sg.StatusBar("状态:"),
]
menu_def = [
["&程序", ["关于", "保存配置", "Exit"]],
["&帮助", "&使用说明..."],
]
top_menu = [sg.Menu(menu_def)]
layout = [top_menu, task_list, status_bar]
# 3.建窗口
return sg.Window(
"测试程式窗口",
layout,
keep_on_top=True,
return_keyboard_events=True,
)
@app.bind_event('保存配置')
def on_save_options():
sg.popup("you click save options")
@app.bind_event('lot1')
def on_input_lot1(window: sg.Window, values: dict):
window["lot4"].update(values.get("lot1"))
@app.bind_event('lot2')
def on_enter_lot2(window: sg.Window, values: dict):
new_text = "您输入的是:{}".format(values.get("lot2"))
window["lot3"].update(new_text)
@app.bind_event(["no_arg_fun", "关于"])
def on_no_arg_fun():
sg.popup(
"软件说明:",
"关于事件,点击菜单关于启动",
title="关于程序",
keep_on_top=True,
)
@app.bind_event("win_fun")
def on_win_fun(window: sg.Window):
sg.popup(
"软件说明:",
"新建任务",
title="关于程序",
keep_on_top=True,
)
window["lot2"].set_focus(force=True)
@app.bind_event("val_fun")
def on_val_fun(values):
lot1 = values.get("lot1")
lot2 = values.get("lot2")
sg.popup(
"软件说明:",
"新建任务",
lot1,
lot2,
title="关于程序",
keep_on_top=True,
)
@app.bind_event(["win_val_fun", "lot2"])
def on_win_val_fun(window, values):
sg.popup(
"软件说明:",
"新建任务",
title="关于程序",
keep_on_top=True,
)
lot1 = values.get("lot1")
window["lot3"].update(lot1)
def main():
main_window = make_main_window()
# 增加了一个Exit退出事件
app.run_event(main_window, "Exit")
if __name__ == '__main__':
main()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyguievent-0.0.2.tar.gz
(17.8 kB
view details)
Built Distribution
File details
Details for the file pyguievent-0.0.2.tar.gz
.
File metadata
- Download URL: pyguievent-0.0.2.tar.gz
- Upload date:
- Size: 17.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1724aa8928d4d6d631035fa0e54ba6bbe57ec455f3c18f983b370d240dd9af8 |
|
MD5 | 9c1b78031fdc64711b4f200e0708a92c |
|
BLAKE2b-256 | 964067b19207706bfedfcd81e1d67ce2f6e57987589a10c1cca558dee3463870 |
File details
Details for the file pyguievent-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: pyguievent-0.0.2-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06227a49871d4433f5f88b9f686118bf7d107e1e9d480b98c8c6b51904dc188f |
|
MD5 | 89840b71db2c1db9a469d7d515f17f37 |
|
BLAKE2b-256 | a70efd0930035baaf3b72da7c253546ab5902afe109734a3bc73573adaf68511 |