首页 > 其他分享 >「Pygors跨平台GUI」1:Pygors跨平台GUI应用研究

「Pygors跨平台GUI」1:Pygors跨平台GUI应用研究

时间:2024-05-16 13:53:19浏览次数:21  
标签:语言 GUI C语言 跨平台 Go Pygors Rust

「Pygors系列」一句话导读:

Python、Go、Rust、C程序跨平台GUI框架研究。

 

一、问题

Pygors是什么?

Pygors是我自己创造的一个词,就是Python、Go、Rust、C四种语言的合体。目的是为了跨平台GUI应用。

至于说怎么多了个C语言,那是因为前三种语言都与C语言有密切的关系,C语言无所不在。

 

为什么是跨平台是Python、Go、Rust、C四种语言?

Python是热度最高的语言,当前TIOBE排名第一;

Go是易学易用跨平台的语言,当前TIOBE排名第七;

Rust是高质量高效率的语言,当前TIOBE排名第十九;

C是历史与积累最深厚的语言,当前TIOBE排名第二。

 

Java,这么多年来,GUI还是一个不及格的状态,其它JVM语言如Kotlin、 Groovy、Scala等都一样。

C#,跨平台存在感还不如Java,这种从根子上就排斥跨平台的语言,就不要期待了。

C++,早就迷失在泛型中不能自拔了。

Swift,如果说C#屁股总是不正,那Swift就更歪了。

Dart,分不清是语言,还是Flutter专属语法糖。

至于JavaScript、PHP、R等等偏科的语言,就更别提了。

 

其它新兴语言中,研究了Zig、Hare、ring-lang、nim-lang、crystal、Ponylang、vlang等语言,发现对标C语言的非常多,

特别是V语言,它把一推C语言的库都转成了V语言,然后打造了一个全V语言的完整工具链。基本可以视为C语言的方言。

 

二、标准

为什么要选择四种语言?

因为每种语言的目标和应用范围不同。

 

Python语言它最大的特点就是简单易学,适应性最佳。

Go语言它最大的特点就是没有短板,什么都可以什么都不拔尖。

Rust语言它最大的特点就是走专业路线,难学难用但安全高效。

C语言它最大的特点就是兼容性好,积累多。

 

几种语言的侧重点有什么不同?

因为它们的目标不同,所以发展的侧重点也不同。

 

Python语言主打工具,它的要求是简单易用,适应性好,比如Tkinter就比QT要好。

Go语言主打高性价比,它的要求是均衡,不求最好,但求最多。

Rust语言主打高质量,它的要求是专业,事事都要做到最优。

C语言主打基础与积累。它的要求是可移植性好,比如Libui就被广泛移植。

 

三、项目

具体有哪些项目值得关注?

 

Python语言

主要的关注点是适应性,依赖越少越好,特别是需要编译的依赖。

编写类似于项目原型或开源工具之类的应用,易安装易使用,不挑环境。

比如Tkinter相关项目,Tkinter几乎是所有Python环境都包含的特性,唯一的缺点就是太冷门了。

 

Toga

最值得关注的GUI项目是Toga,它基于原生界面,使用底层的FFI(Foreign Function Interface)调用。

https://github.com/beeware/toga

 

Go语言

主要的关注点是均衡,要求易学易用,没有大的缺点或难点。

编写短平快的互联网应用或开源工具。

Go的GUI项目是Pygors中最少的语言,没有像winit这种跨平台Windowing窗口管理库和Graphics图形库。

 

fyne

目前最值得关注的GUI项目是fyne,但它的问题也不少。

https://github.com/fyne-io/fyne

 

Rust语言

主要的关注点是专业,要求稳定安全,功能强大。

编写商业化的管理应用程序或者高性能高可靠的专业应用。

利益于Winit、baseview、glazier等窗口库和piet、wgpu等图形库,Rust的界面框架很繁荣。

 

Iced

目前最值得关注的GUI是Iced

https://github.com/iced-rs/iced

 

floem

背靠着新兴编辑器Lapce的floem是非常有前途的框架,毕竟Lapce是最大的用户和示例代码

https://github.com/lapce/floem

 

 

Xilem

xilem也是不错的选择(Druid的继任框架),

https://github.com/linebender/xilem

 

(全文完)

 

标签:语言,GUI,C语言,跨平台,Go,Pygors,Rust
From: https://www.cnblogs.com/windfic/p/17208277.html

相关文章

  • 「Pygors跨平台GUI」2:安装MinGW-w64、MSYS2还是WSL2
    「Pygors系列」一句话导读:MinGW-w64只有编译器,MSYS2带着更新环境,WSL2实用性比较高 历史与渊源  Windows平台Linux平台二进制兼容WSL2:运行Linux程序Wine:运行Windows程序接口兼容CygWin:编译Linux程序Winelib:编译Windows程序编译器兼容MinGW-w64:编译Linux......
  • 14.GUI 编程
    1.GUI编程简介GUI:图形用户界面GUI核心技术:Swing、Awt类界面不美观需要jre环境为什么要学习:可以写出一些小工具工作时候,也可能需要维护到Swing界面,概率绩效了解MVC架构,了解监听2.AWT类2.1.Awt介绍包含了很多类和接口元素:窗口、按钮、文本框java.awt包......
  • Copilot - OpenAI与GitHub联合出品的自动代码生成AI+VirtualLCD - 可用于 GUI 移植的
    1、AntOS-适用8051的超轻量级实时操作系统AntOS是一款超轻量级实时操作系统,抢占式调度极简内核,专门为小型家电及轻量型物联网终端设计,适合在8051为内核的MCU上运行。项目主页: https://gitee.com/zeweni/ant-osAntOS提供层级服务,可以进行任意裁剪。内核层包含两个子系......
  • 使用pyautogui向下滚动条到底
    使用pyautogui向下滚动条到底一、pyautogui简介pyautogui是一个用于模拟鼠标和键盘操作的Python模块,它可以用来自动化执行一些重复性的任务,提高工作效率。在这篇文章中,将学习如何使用pyautogui模块来实现向下滚动条到底的功能。二、安装pyautogui模块在使用pyautogui之前,需要......
  • 使用微信文件助手跨平台互联网互传文件
    微信的文件助手有下面这些版本:网页版https://filehelper.weixin.qq.com/移动版PC版https://weixin.qq.com/这些之间都是可以互传文件的。这样一台机器登录文件传输助手网页版,一台机器登录PC版本的微信,两台互联网上的机器互传文件就可以实现了。从网上看,2021年12月31日......
  • nicegui:Python 图形界面库,简单好用
    前言在现代计算机应用程序开发中,图形用户界面(GUI)是用户与程序交互的重要组成部分。然而,GUI开发往往需要大量的代码和复杂的布局,给开发者带来了一定的挑战。在本篇博文中,将介绍nicegui,它是一个简单易用的图形用户界面库,提供了一种简化GUI开发的方式,使开发者能够更快速地构建吸......
  • nicegui:Python 图形界面库,简单好用
    前言在现代计算机应用程序开发中,图形用户界面(GUI)是用户与程序交互的重要组成部分。然而,GUI开发往往需要大量的代码和复杂的布局,给开发者带来了一定的挑战。在本篇博文中,将介绍nicegui,它是一个简单易用的图形用户界面库,提供了一种简化GUI开发的方式,使开发者能够更快速地构建吸......
  • libvips 一个最好用的高性能、低内存、跨平台的图片处理库
    一个可以媲美OpenCV的开源库,它具有高性能、低内存、跨平台、无内存泄漏的特性。项目简介这是用C++开发的图像处理库,支持的API超过300多个,涵盖了算术、颜色、图片转换、卷积、形态、马赛克、合并、切割等。支持多种图像格式,包括:JPEG、JPEG2000、JPEG-XL、TIFF、PNG、WebP、HEIC......
  • jmeter以命令行模式运行:非GUI界面
    *`-n`:表示非GUI模式运行:命令行模式运行jmeter脚本*`-t`:要执行的jmeter脚本(JMX):a.默认执行当前路径下的脚本,b.或执行指定路径下的脚本*`-l`:生成结果文件(JTL):a.默认在当前路径下生成JTL文件,b.或在指定路径下生成JTL文件*`-e`:生成HTML报告*`-o`:HTML报告的文件夹路径......
  • 2024CVPR_Low-light Image Enhancement via CLIP-Fourier Guided Wavelet Diffusion(C
    一、Motivation1、单模态监督问题:大多数方法往往只考虑从图像层面监督增强过程,而忽略了图像的详细重建和多模态语义对特征空间的指导作用。这种单模态监督导致不确定区域的次优重建和较差的局部结构,导致视觉结果不理想的出现。------》扩散模型缺乏有效性约束,容易出现多种生成效......