Skip to main content

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系统都可以用,其他系统未测试

特别说明

事件绑定和事件函数的有点问题,只能接受以下四种形式

  1. func(),这种无参数函数
  2. func(values=),这种关键字参数函数,只有一个参数是值
  3. func(window=),这种关键字参数函数,只有一个参数是窗口
  4. 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


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)

Uploaded Source

Built Distribution

pyguievent-0.0.2-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

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

Hashes for pyguievent-0.0.2.tar.gz
Algorithm Hash digest
SHA256 c1724aa8928d4d6d631035fa0e54ba6bbe57ec455f3c18f983b370d240dd9af8
MD5 9c1b78031fdc64711b4f200e0708a92c
BLAKE2b-256 964067b19207706bfedfcd81e1d67ce2f6e57987589a10c1cca558dee3463870

See more details on using hashes here.

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

Hashes for pyguievent-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 06227a49871d4433f5f88b9f686118bf7d107e1e9d480b98c8c6b51904dc188f
MD5 89840b71db2c1db9a469d7d515f17f37
BLAKE2b-256 a70efd0930035baaf3b72da7c253546ab5902afe109734a3bc73573adaf68511

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page