PySimpleGUI复杂C/S系统开发(多窗口等)

本文介绍了如何使用PySimpleGUI进行C/S客户端系统开发,对比了多种PythonGUI库,推荐PySimpleGUI因其易于快速开发且成本较低。文章详细讲解了PySimpleGUI的入门代码和实际应用,包括窗口组件、事件处理和界面更新等内容。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python PySimpleGUI复杂客户端系统开发(多窗口等)

目录

0.需求

1.前提

2.入门代码        

3.实际代码

4.界面


0.需求

       C/S客户端系统开发、快速开发、短暂开发、成本低、界面不要求酷炫!!!那么可以考虑PySimpleGUI

        注意:PySimpleGUI 5 需要注册密钥,商业需要花钱,因此采用4.60.5版本,免费!!!

        1. Qt(c++)、winform和.net(c#)、Java、Go、这些编程、库的GUI学习成本高,若想快速开发和短暂开发,不推荐这个(不过也和个人熟悉程度有关,优先使用自己熟悉的语言编程-个人搞深度学习-优先Python);

        2. 采用Python进行客户端GUI界面开发,有好几个库可用

        Gooey 2021年就不更新了,基于Wxpython,像argparse解析参数一样,但是不能可视化图片,可以读取路径! 极其简单操作可以,但不推荐。

        dearpygui 一直更新,底层是c++,这是python接口,打开文件选择的窗口是独有的,不方便,尽管功能复杂强大,但是不如学pyqt6、pyside6,不推荐。

        Tkinter是python内置库,但是也需要学习很多内容,不利于快速,界面不酷炫-导致基于此库开发的PySimpleGUI界面也不酷炫,实用为主吧,要想酷炫且python下推荐pyqt和pyside6(可自定义酷炫样式、底层是c++性能更高)。

         PySimpleGUI最符合条件①PySimpleGUI(主要库,基于Python自带的GUI图形设计库Tkinter);②PySimpleGUIWX(基于GUI图形设计库WxPython);③PySimpleGUIQT(基于GUI图形设计库PySide2);④PySimpleGUIWEB(基于GUI网页端图形设计库Remi)

        pyqt5、6 GPL协议,若商业化需要购买(尽管很多人不关心),Qt的python接口(文档多、用户多)

        pyside6 官方QT6的python接口,文档不如pyqt6多一些,但功能基本相同,若进行更复杂、更灵活、更好看界面时,且用python时,可推荐。

        总之,根据第一句话,判断我需要pysimplegui开发GUI。

1.前提

       学习资料: PySimpleGUI-githubPySimpleGUI官网、B站上也有个UP主(非本人)有个系列视频教程(方便入门,可快进查看、可打好基础,对于复杂操作,这个视频未写,但是也很好了,本质都是看官网文档,挨个查英文API文档,再挨个试试)

        PySimpleGUI默认是基于python内置库tkinker的高级库,旨在简化、快速开发客户端界面!

        经验:1个窗口界面写1个函数,每个窗口函数包含:布局layout、窗口事件event(持久化窗口有while True代码,里面写各种操作)

2.入门代码        

# 摘自-官方github 每个窗口都要有如下5个步骤
import PySimpleGUI as sg                        # Part 1 - The import
# Define the window's contents
layout = [  [sg.Text("What's your name?")],     # Part 2 - The Layout
            [sg.Input()],
            [sg.Button('Ok')] ]
# Create the window
window = sg.Window('Window Title', layout)      # Part 3 - Window Defintion
# Display and interact with the Window
event, values = window.read()                   # Part 4 - Event loop or Window.read call
# Do something with the information gathered
print('Hello', values[0], "! Thanks for trying PySimpleGUI")
# Finish up by removing from the screen
window.close()                                  # Part 5 - Close the Window

3.实际代码

        对于很多函数不懂的,可以查看人家的视频or官方文档!如下是一些关键组件、操作等

        sg.Window、Button、Input、Text、FrameColumn、Table、Stretch(用于布局中组件横向对齐)、以及window.bind绑定事件

        ①组件内容等参数更新:一般采用window[key].update(),查看源码知道window[key].update()等同于window.FindElement(key).update(),推荐前者。

        ②若想组件跟随窗口自适应变化,那么sg.Frame和sg.Column组件更好,其他组件需要监控窗口尺寸变化,再update组件尺寸。可以在column和frame中包含其他组件!

        ③event, values = window.read(),其中event为组件中的事件名称(如有key参数则为key),values为组件中的数值内容(只是组件级,像menu中按钮对应内容无法获取到)

import PySimpleGUI as sg

def create_bar_window(main_window):
    layout = [
        [sg.In(key="-barIN-")],
        [sg.Button("更改", key="-barUpdate-")],
    ]
    bar_window = sg.Window("更新主窗口内容", layout, finalize=True)
    # main_window.hide()
    while True:
        bar_event, bar_values = bar_window.read()
        if bar_event == sg.WIN_CLOSED:
            bar_window.close()
            break
        if bar_event == "-barUpdate-":
            print(bar_event, bar_values)
            main_window["-main_text-"].Update(value=bar_values["-barIN-"])
    # main_window.un_hide()
    bar_window.close()

def create_main_window():
    menu_def = [
        ["文件", ["打开::open", "导出::save", "关闭图像::close"]], 
        ["要素", ["一键生成::one",]],
    ]

    layout = [
        [sg.Menu(menu_def)],
        [sg.Text("I'm leilei", key="-main_text-")],
    ]

    window = sg.Window("操作", layout, size=(400,300), resizable=True, finalize=True)
    # window.maximize()

    while True:
        event, values = window.read()
        print(event, 111)
        if event == sg.WIN_CLOSED:
            # print(sg.WIN_CLOSED, 555)
            break
        if event == "打开::open":
            img_filename = sg.popup_get_file('选择输入图片', no_window=True, file_types=(("图片类型", "*.png;*.jpg"),))
            print(img_filename)
        elif event == "导出::save":
            save_img_filename = sg.popup_get_file("选择保存图片", no_window=True, save_as=True, file_types=(("图片类型", "*.png;*.jpg"),))
            print(save_img_filename)
            is_ok = sg.popup_ok_cancel()
            print(is_ok)
        elif event == "关闭图像::close":
            print(window["关闭图像::close"])
        if event == "一键生成::one":
            create_bar_window(window)

    window.close()

if __name__=="__main__":
    create_main_window()

4.界面

 

另外的实现的一个小例子:

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

目前pip命令只能安装PySimpleGUI≥5.0,且是收费的,即使打包成.exe文件打开界面时也会显示试用30days,本资源提供免费老版本,附带安装教程! 第一步:解压缩 第二步:cd 到解压后的文件夹(注意:到最后一层文件夹能看到setup.py),win+r 打开cmd 第三步:cmd中输入pip install .(注意:install后面有一个空格一个点),回车完成 PySimpleGUI是一个用Python编写的图形界面库,它提供了一个简单的方法来创建各种类型的图形界面。它基于其他GUI工具包如Tkinter、PyQt、PyGTK和WxPython,并为它们提供了一个统一的接口。PySimpleGUI广泛应用于数据可视化、数据输入、系统监控等多种场景。 PySimpleGUI经历了多个版本的迭代,包括4.60.5这样的老版本和最新的5.0版本。不同版本之间在功能、性能以及使用许可方面存在差异。根据给定文件信息,PySimpleGUI 4.60.5版本是可以免费使用的,而PySimpleGUI 5.0版本则涉及到收费问题。这可能是由于新版本引入了更多的高级功能和改进,但同时也带来了版权费用。 当前,使用pip命令默认只能安装PySimpleGUI的最新版本5.0或以上,这些版本会标记为收费,并且当应用程序被打包为.exe格式时,在首次运行时也会提示试用30天。为了解决这个问题,提供的资源中包含了PySimpleGUI 4.60.5版本的老版本代码,允许用户免费使用,并且包含了详细的安装教程。 安装教程分为三个简单步骤:首先是解压缩文件,然后是进入解压后的文件夹并打开命令提示符,最后是在命令提示符中输入特定的pip命令来安装。在输入pip命令时,需要注意命令格式正确,特别是“install”和“.”之间应该有一个空格,这是确保pip能够识别当前目录下的setup.py并执行安装。 PySimpleGUI的设计目的是简化GUI开发流程,让开发者能够快速构建窗口、按钮、表格和其他GUI元素。它的设计哲学是易于上手,即所谓的“开箱即用”(Out of the box)。即使是初学者也能够通过简单的代码快速创建出交互式的桌面应用程序。此外,PySimpleGUI还支持主题定制,允许开发者对应用程序的外观进行个性化调整,以适应不同的应用场景。 在使用PySimpleGUI时,开发者可以不必深入了解底层GUI工具包的细节,从而把注意力集中在程序的逻辑和功能上。这种方式极大地降低了GUI编程的门槛,使得更多人可以参与到桌面应用开发中来。不过,随着版本的升级,新功能的引入和性能的优化也会不断发生,这就需要开发者关注和学习新版本的特性和更新内容,以便更好地利用库的优势。 PySimpleGUI是一个功能强大且易于使用的GUI库,它为Python开发者提供了一个高效的工具来创建具有专业外观的桌面应用程序。对于那些希望避免版权费用的用户来说,使用4.60.5这样的免费老版本不失为一个好选择。而对于追求最新技术和功能的用户,升级到新版本则会带来更多的好处,只是需要考虑到相应的费用问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值