V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
AX5N
V2EX  ›  程序员

用于开发小工具,有什么 gui 库推荐吗,运行效率优先

  •  
  •   AX5N · 2018-09-04 01:29:53 +08:00 · 5333 次点击
    这是一个创建于 2310 天前的主题,其中的信息可能已经有所发展或是发生改变。

    要求:占用空间 > 性能 > 跨平台 > 开发效率 > 美观

    • 因为都是些极其简单的界面,所以开发效率就不考虑了,不会复杂到哪去。
    • 静态编译后空间占用最好在 500KB 以内,越小越好。
    • 平台以 windows 为主,但保留移植到 MacOS 上的想法。
    • 性能在差别不大的情况下,2 和 3 的优先级可以互换。
    • 对外貌没要求,小工具也做不出花来。

    目前选定 wxWidgets,但感觉国内讨论的不算多,感觉挺符合这几个要求的,但想再听听别的意见。

    33 条回复    2018-09-05 17:45:42 +08:00
    janus77
        1
    janus77  
       2018-09-04 01:47:18 +08:00 via Android
    不知道你说的多小,如果太小的话业务复杂度低,是不是可以考虑放弃性能这块。那我推荐 java🙄
    s127
        2
    s127  
       2018-09-04 02:06:30 +08:00
    1. 既然性能优先,建议不要用跨平台的 GUI 库,楼主说过是极其简单的界面
    2. 如果只是想界面布局简单点,win 可以试试 duilib。
    3. 底下的逻辑层可以使用 c/c++或其他性能优先,且支持跨平台编译的语言
    4. 真要跨平台,还要性能,那试试 QT 吧,只是静态编译 500k 有难度
    PythonAnswer
        3
    PythonAnswer  
       2018-09-04 03:26:00 +08:00 via iPhone
    命令行比较小 好久不写界面了
    geelaw
        4
    geelaw  
       2018-09-04 05:31:25 +08:00 via iPhone   ❤️ 1
    裸写 Win32 就是一把梭!

    并且如果你仔细观察 Windows SDK,里面有些 headers 是有关于 Mac 版本的 ifdef 的,说明微软一度允许你用 Win32 开发 Mac 程序(这个是 Visual C++ 4.0 的功能,但现在已经没有了)
    IllBeBack
        5
    IllBeBack  
       2018-09-04 06:28:19 +08:00 via Android
    Delphi 免费版 / Lazarus / Codetyphon
    跨平台,直接拖拽
    thedrwu
        6
    thedrwu  
       2018-09-04 06:34:00 +08:00 via Android
    如果只是常用控件,用 user32.dll 直接撸。空间和性能在 Win 下没有别的方式可以媲美。普通 dialog 用资源文件画,做个 prototype 分分钟的事。其他平台上 link 到 libwine。

    俗称 win32api。
    loading
        7
    loading  
       2018-09-04 06:38:31 +08:00 via iPhone
    loading
        8
    loading  
       2018-09-04 06:39:19 +08:00 via iPhone
    建议 macos 还是单独再开发。
    mmdsun
        9
    mmdsun  
       2018-09-04 07:47:51 +08:00 via Android
    xamarin
    bombless
        10
    bombless  
       2018-09-04 07:51:12 +08:00 via Android
    都用原生不好吗。不过效率方面 direct ui 据说还效率更高,conrod ?
    iwtbauh
        11
    iwtbauh  
       2018-09-04 07:58:03 +08:00 via Android
    wxwidgets 挺好的
    讲真你直接 win32api 蛋疼不说性能提升也是微乎其微。
    没有静态编译这种东西,只有静态链接。lz 有时间重修一下计算机组成原理
    SupperMary
        12
    SupperMary  
       2018-09-04 08:00:35 +08:00 via Android
    ingui
    0312birdzhang
        13
    0312birdzhang  
       2018-09-04 08:03:38 +08:00 via iPhone
    qt+python
    0xcb
        14
    0xcb  
       2018-09-04 08:12:44 +08:00 via Android
    imgui
    ysc3839
        15
    ysc3839  
       2018-09-04 08:17:43 +08:00 via Android
    500KB 以内的话估计只能用原生 API 了吧? wxWidgets 没用过不确定体积多大。但 Qt 肯定是超过 500 KB 的。
    zjsxwc
        16
    zjsxwc  
       2018-09-04 08:30:29 +08:00
    还用考虑? C#与 Swift 分别开发呗!
    Droi
        17
    Droi  
       2018-09-04 09:01:48 +08:00
    终端下面的 GUI NCurses 前三个要求能达到,后面两个就算了吧。
    https://sourceforge.net/p/mingw-w64/wiki2/NCurses/

    pyqt5 编成独立运行文件,在 win 下会过 20MB
    lihongjie0209
        18
    lihongjie0209  
       2018-09-04 09:01:51 +08:00
    首先排除任何前端框架
    urmyfaith
        19
    urmyfaith  
       2018-09-04 09:06:28 +08:00
    C#与 Swift 分别开发. +1
    ayang23
        20
    ayang23  
       2018-09-04 09:08:19 +08:00
    小工具 WTL 就不错,反正界面简单,osx 下再做个原生的
    kokutou
        21
    kokutou  
       2018-09-04 09:09:46 +08:00
    python 的 tk,
    然后用 nuitka 编译成可执行文件。。。
    SuperMild
        22
    SuperMild  
       2018-09-04 09:12:06 +08:00
    golang 写服务器,启动后自动打开网页,在右下角任务栏显示图标(参考某灯)。

    占用空间极小,性能爆炸,可跨平台,开发效率中等水平(但你要求也置后),美观可简单也可上前端库搞漂亮。
    SuperMild
        23
    SuperMild  
       2018-09-04 09:15:08 +08:00
    不过 py tk 也是个很不错的选择。(其实现在硬盘容量和带宽都上去了,真没必要追求太小的体积)
    PythonAnswer
        24
    PythonAnswer  
       2018-09-04 09:20:31 +08:00 via iPhone
    能编译成一个大文件吗?记得 tk 要拖着好多目录的
    liuguang
        25
    liuguang  
       2018-09-04 09:30:41 +08:00
    C# wpf 了解一下,可以编译出几十 K 的程序,缺点是需要.net framework,不过 win10 开始,系统已经自带 net framework 了
    pagict
        26
    pagict  
       2018-09-04 09:31:43 +08:00
    记得 fedora 下有个什么包,用 shell 就可以搭简单 gui 了,但是不记得叫啥了。。。
    toono
        27
    toono  
       2018-09-04 09:36:47 +08:00
    直接用 python 的标准库中的 tkinter GUI 库
    pagict
        28
    pagict  
       2018-09-04 09:42:07 +08:00
    #26
    zenity
    encro
        29
    encro  
       2018-09-04 10:29:38 +08:00
    tkinter,
    SuperMild 提到的 lantern 采用的 go web server,类似的有 https://gitee.com/Unknown/gogs。或者自己用 python+pyinstaller 应该也可以
    如果不怕客户端太大的话,就上 electron 吧
    751762476
        30
    751762476  
       2018-09-04 11:32:24 +08:00
    @SuperMild 这个方案挺不错的,只要能写 web 的语言都可以
    nieyujiang
        31
    nieyujiang  
       2018-09-04 13:13:50 +08:00
    追求体积,Swift 也可以直接排除了.Swift 需要打包 runtime 环境到 app.起码 40m 起步吧.
    @urmyfaith #19 #19
    @zjsxwc #16 #16
    kikyous
        32
    kikyous  
       2018-09-04 13:33:48 +08:00
    qt
    gamecreating
        33
    gamecreating  
       2018-09-05 17:45:42 +08:00
    qt
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:58 · PVG 05:58 · LAX 13:58 · JFK 16:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.