困扰已久,专业程序员到底怎么写 GUI 程序?

2022-11-15 19:14:57 +08:00
 faketemp

这个问题好奇和困扰已久,实在忍不住我要问出来——如果开发一个 GUI 程序,专业的程序员到底是如何开发和维护 GUI 界面呢?

对我这种"三脚猫"要写工具类软件,多会选用 C#/Delphi/VB/aardio 甚至易语言,总之必须要有一个 IDE 来拖放控件画出界面,也方便修改控件布局 /属性等等,然后集中精力来写(抄改)核心功能代码,事半功倍

但在学习 Golang/python/C/C++等发现几乎没有什么现存的成熟的很方便的 IDE 来组织界面

拿 Golang 来说,尝试去 B/Y 站搜一圈都是类似"fyne/walk/gio/govcl"等,打开库官网查看文档,全部都是只给一段示例代码告诉你这样运行就出现一个自绘的"Hello world"窗口?但对于如何快速地画出想要的界面、布局等等只字不提

搜索视频教程吧,看了十几集无非就是直接拿几百行代码告诉你这几行是画个 600x800 的窗口、那几行是在哪个坐标绘制一个 listview 控件、那几行是添加 Edit 和 Button 、这几行是添加控件响应事件?????

——看的一脸懵逼甚至有些牙疼,你到底是如何画出这个界面的?

都 21 世纪了真的有人写 GUI 程序是要靠脑海中想象出来一张界面草图,然后在记事本 /IDE 中用代码一行行把界面"绘制"出来的吗????

说明:
我知道 govcl 可以自己套用 Lazarus 绘制界面,也知道 python 也有什么 pyqt/Tkinter 等,但集成度低感觉都不直观不方便,并且由于都是非官方维护,大多文档不全资料不足并随时弃坑
最关键的是 感觉也太不优雅了

现在很多都用 Electron ,这个怎么说呢,编个计算器都几十兆我实在难以接受...

10362 次点击
所在节点    问与答
93 条回复
YRInc
2022-11-15 19:33:01 +08:00
同问,同好奇。现行方案似乎是只有 C#配合 VS 来拖拽控件
dw2693734d
2022-11-15 19:40:53 +08:00
要不 Electron ,要不 qt
Frankcox
2022-11-15 19:41:14 +08:00
C++的话有 QT ,至于其他的,python 写 GUI 的还有不少,Golang 我是真没见过几个知名 GUI ,可能是我孤陋寡闻吧
Building
2022-11-15 19:42:28 +08:00
是什么让你这个专业程序员以为 GUI 就应该很简单?
helone
2022-11-15 19:44:05 +08:00
golang 有 wails 和 Electron 差不多意思,不过各端调用系统的 webview ,可以试试
kurarin
2022-11-15 19:44:50 +08:00
如果很在意‘到底是如何画出这个界面的’其实都不用在意,现在所谓画 UI 大部分的方案都是声明式 UI ,连前端都不用知道渲染引擎是怎么工作的。对于 OP 建议是看下 swiftUI 或者 tauri 的方案,可以让你更少关心 GUI 是怎么出来的
faketemp
2022-11-15 19:54:27 +08:00
@Building 兄弟你这阅读理解建议多练几个题啊
faketemp
2022-11-15 19:55:38 +08:00
@helone webview 好像 win10 以上系统才有内置 写的程序 win7 默认无法运行 xp 更不用说了
adoal
2022-11-15 19:58:50 +08:00
专业的 GUI 开发,在程序员做实现之前至少要需求工程师(现在流行叫产品经理)做原型设计,美工出图、标注、切图。
所以有没有 RAD IDE 其实关系不是很大。有则好,比如用 WPF 开发可以先根据原型在 VS 里拖拉,再把 XAML 扔到 Expression 里套设计。没有的话也不是大问题。并不需要一万倍生产力的程序员脑海里 YY 界面再手写裸码。
拖拽对于快速开发一些不讲究界面的工具或者业务系统来说确实可以在特定环节上有效提高生产力。但要求高的界面靠程序员反复拖拽着尝试怎么排布更好看是搞不出来的。
faketemp
2022-11-15 19:59:47 +08:00
@kurarin 大佬 我不是好奇 gui 后面的运行原理 我是好奇文档或教程里几百行绘制 GUI 界面的代码 是用什么 ide 拖放控件画出来的 还是真的要自己靠想象一行行写代码绘出来
lukaz
2022-11-15 19:59:59 +08:00
大多数 GUI 程序应该都是基于某个图形框架用代码堆出来的,使用现成的布局和组件,熟练的话写起来也不慢。用 Electron 不也得手写 HTML 吗?
hujun528
2022-11-15 20:02:57 +08:00
MFC
helone
2022-11-15 20:03:26 +08:00
@faketemp win 下基本就是 webview2 ,只有 win11 高版本用户才有,可以内嵌或者提示用户下载,如果要求 win7 下跑的话估计只能调 IE ,官方有文档,xp 无解,如果你只有 win 的需求可以试试 aardio ,这玩意主流语言都能调用,而且范例教程也多,缺点就是只能 win ,然后作者有点。。。
adoal
2022-11-15 20:07:40 +08:00
顺便,在 Visual Studio 里用 C/C++开发 Win32 GUI 程序时,当然也是有界面编辑器的。早期还没有 VS 的时候,有 VB 、VC ,你猜 VC 是啥?
Abbeyok
2022-11-15 20:07:56 +08:00
除了商业软件以外,其他工具类软件实际上不会很在意界面,更多的是功能
JerryY
2022-11-15 20:08:54 +08:00
Flutter 不是现在也能写了吗?
ila
2022-11-15 20:11:08 +08:00
golang 自由度太大了,很多都要自己看 godoc.
fyne 能用,需要时间摸索,如果之前没有写 gui 的经验,那是一脸懵
cmdOptionKana
2022-11-15 20:13:57 +08:00
其实很好理解, 关键在于: 没什么是加一层抽象不能解决的, 如果不行, 就再加一层.

基本思想就是弄个框架, 组件化, 里面有一些叫做 container 或 layout 的组件来帮助布局, 在布局里面堆组件.

传统布局多数可以做固定布局, 那时搞一些拖拽工具是合理的, 但现代化布局提倡自适应, 根据窗口大小变化.

绝大多数软件的布局都不会太复杂, 不管用什么方法, 都很好搞. 而有些特别复杂的, 不管用什么方法都很不好搞.
keenoappend
2022-11-15 20:23:13 +08:00
好奇+1 用 idea 是听别人说使用 java 实现的,但是那些图形库都没见过,很迷
em70
2022-11-15 20:25:39 +08:00
每个语言都有自己擅长的领域,GUI 这个领域最强的就是 delphi,开发最简单,体积最小,对用户要求最低,开箱即用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/895484

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX