困扰已久,专业程序员到底怎么写 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 ,这个怎么说呢,编个计算器都几十兆我实在难以接受...

10265 次点击
所在节点    问与答
93 条回复
paopjian
2022-11-16 10:57:49 +08:00
流传到现在的大部分软件都是多次迭代后的结果,qq 什么的甚至要自研二次开发引擎,可见 GUI 开发的麻烦,更别提环境的复杂了,用户用 XP 系统都有可能,也就是为啥 wine 适配这么吃力.
直接用 qt 之类的的原生界面就很丑,和 HTML 不用 CSS 也很丑是同理的,得一层层套皮美化
xz410236056
2022-11-16 11:14:48 +08:00
用 CLI 的程序员总是有一种莫名其妙的优越感,看不起 GUI 。
FcukYouTony
2022-11-16 11:17:04 +08:00
界面开发确实很难的, 不然后端程序员也太能打了
我记得好像就 ios 开发的拖拽控件还不错..........
musi
2022-11-16 11:20:25 +08:00
21 世纪的前端不就是“拿着设计给的 UI 图,然后在记事本 /IDE 中用代码一行行把界面绘制出来么”
mercury233
2022-11-16 11:24:50 +08:00
能理解 html+css 需要自己写 gui 代码,就能理解其他语言也需要了
zliea
2022-11-16 11:43:27 +08:00
流畅:各个系统厂商自己出,windows c#; mac swift
兼容且复杂:qt
兼容且简单:electron
Shazoo
2022-11-16 11:47:06 +08:00
内部工具一般都是 PyQt 的。方便快捷。除了打包尺寸大点,没啥坏处。

用 QTDesigner 设计界面挺快捷准确。布局容器类型也足够充分的。
zhttp
2022-11-16 12:01:48 +08:00
我搞嵌入式的,只用过 QT ,会现在 qt creator 上面画出来,但是有时候单纯的拖拽满足不了需求,就会在代码里面再微调或者修改。
advicebullet
2022-11-16 12:37:32 +08:00
大部分文档、书籍虽然没有明确指出,但基本都是假定阅读者满足特定基础的。每个人的学习路径是不同的,编写者基本上也无法代入你的情况去考虑了。
SuperMild
2022-11-16 12:48:58 +08:00
@seers 确实,我自用的工具都是用 go 做个本地网站,自然就跨平台了,网页的前端框架又多又成熟,还能随时小改一下部署到服务器。

可惜缺点也很明显,只能自用,大多数人不喜欢这种软件。
raycool
2022-11-16 13:21:52 +08:00
我就是你说的手写 pyqt 的
界面都是先画个草稿,然后代码调整布局。
zjz1993
2022-11-16 13:31:49 +08:00
tauri
renmu
2022-11-16 13:35:40 +08:00
我寻思 electron 也不能拖控件。
写得多了就能差不多能脑补出来了
sparkpark
2022-11-16 13:45:46 +08:00
这样的话楼主不如将做的 cli 添加 api 接口,然后用 amis 拖出页面,打包时也能同 golang 打包到同一个二进制文件,然后别人基于浏览器使用
kaedeair
2022-11-16 14:10:13 +08:00
有个美工给的图就很好弄,有各个 UI 的位置关系
现在 GUI 框架基本上是声明式,通过声明组件的不同属性来确定位置
可以用直接锚定坐标的方式;也可以使用布局,向里面填充组件,每个组件内部也可以有自己的布局,这样套娃来的
LXGMAX
2022-11-16 14:22:09 +08:00
看了 OP 是有跨平台需求的,qt/c++是最方便,qt creator 不是有图形化界面编辑么
asuraa
2022-11-16 14:32:00 +08:00
我跟你一样
我现在已经投入 CEF3 的怀抱了兼职爽翻
https://juejin.cn/book/7075387142121193502/
CrazyRain0001
2022-11-16 14:50:55 +08:00
手写代码 layout ,手写布局 xml ,各种 Designer 拖(一般对非标准控件不友好),最后有设计要求的界面感觉还是 qml 写着最爽
magicdawn
2022-11-16 15:02:23 +08:00
你这就是伸手还嫌弃。
给了你自由,你嫌弃人家简陋;
给了你大而全,你嫌弃人家臃肿。

既然都那么不好,那你可以自己造轮子啊。
图形学本来就是三大浪漫之一
yaron
2022-11-16 15:03:23 +08:00
控件 + 布局,过程中美化,没有控件就自己写控件

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

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

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

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

© 2021 V2EX