免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: hitcser01
打印 上一主题 下一主题

[其他] 我只需要简单的GUI如何实现 [复制链接]

论坛徽章:
2
嗜杀者
日期:2015-11-25 10:44:3015-16赛季CBA联赛之北京
日期:2016-03-20 19:50:17
21 [报告]
发表于 2013-06-05 12:21 |只看该作者
回复 19# 流氓无产者
  yes sir !
嗯,兴趣是最好的老师。

   

论坛徽章:
1
金牛座
日期:2013-10-10 22:06:28
22 [报告]
发表于 2013-06-17 15:04 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
金牛座
日期:2013-10-10 22:06:28
23 [报告]
发表于 2013-06-17 15:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
24 [报告]
发表于 2013-06-17 15:53 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
25 [报告]
发表于 2013-07-03 04:28 |只看该作者
图形界面有个很麻烦的问题:很难跟其他的一些库(特别是IO方面的库)进行组合。

而且如果要处理一些长时间的运算,需要特殊的技巧才能够避免图形界面失去响应。

在这个基础上还得有跨平台,这个其实很难找。

而且,你是否需要自行绘图?还是只要有一个能显示常见标准界面的GUI就够了?

这东西,是没有办法不耗费很多精力的,我给你的意见是:别怕耗费精力,如果耗费的精力不仅仅只耗费在了GUI上,那么就是值得的。

比如一些模型,除了GUI也有用武之地,这样深入学习一下也很好。

下面是推荐。如果是真正的纯C开发,可以考虑一下Lua的诞生地里约热内卢天主教大学(pic-Rio)开发的iup(Portable User Interface),推荐这个的目的是:接口极其简单和概括,基本上只需要学习少数的几个接口,就能够开始写代码了。

如果对脚本语言也很感兴趣,想至少在C之外有一层胶水的话,tcl/tk是很好的,这个GUI的缺点就是和tcl脚本语言结合过于紧密,对于有洁癖的人来说会觉得很不爽,但是如果你恰好打算学习一下tcl,那么它就是完美选择。接口和概念也十分简单。基本上理解了控件树的概念就可以开始搞了。

除此之外,可以谷歌一下轻量级的GUI跨平台库,比如说fltk,没有用过所以不加评价。

我的个人理解是,gtk/qt都太过重量级,分发不易——既然你打算跨平台,分发这个问题你是肯定得面对的。

如果需要绘图,有洁癖的可以考虑各种opengl的wrapper,然后opengl开工,优势是灵活自如,而且opengl的模型可以学习,缺点是还是需要很多精力,精力被用在找各种各样的库上面了,比如说bar做GUI,freetype-gl做文字渲染等等,由此也可以看出其灵活性。

总而言之,GUI,乃至于深入一点的绘图,这都是需要消耗大把精力的地方,我想问问如果不打算把精力放在这里,那么你打算把精力放到哪儿呢?也许知道了你的方向以后,可以更有针对性的来推荐GUI库。

我曾经也花费了很多很多时间想找一个满意的GUI库,一直没有结果。现在注意力一方面转移到了OpenGL,一方面是网络部分的一些模型,我想等对信息交互等等方面有了更加深入的了解以后再去找或者自己写一个满意的GUI框架(这里的框架含义不同,是指一个架构可以包容不同类型和平台的GUI实作,而不是一个方便开发者的大而全的平台)。

论坛徽章:
2
嗜杀者
日期:2015-11-25 10:44:3015-16赛季CBA联赛之北京
日期:2016-03-20 19:50:17
26 [报告]
发表于 2013-07-03 08:06 |只看该作者
本帖最后由 hitcser01 于 2013-07-03 08:22 编辑

这么长一段,很感谢啊!:wink:
我还是先介绍下我的情况吧
我是本科学生,目前大二(马上大三),没有读研打算,计算机相关专业。
说来惭愧,还没有决定到底向哪个方向发展。只是在学习的过程中发现有GUI的需求,特此前来一问。
以下是有感而发,有不对的地方请多指教!

为什么不想花太多精力?我真的是慢慢才懂的:数据结构与算法是计算机领域最重要最基础的知识。而我这些都还很弱,那些领域内的名著都还没有看过。所以精力很有限,当然,还有很多也很重要的事情也需要做(部分重要的专业课)。如何能在如此庞大数量的计算机学生中脱颖而出,我想一定要有“核心竞争力”,而这个能力,亟需扎实的“数据结构与算法”基础和其它专业理论基础。所谓万变不离其宗,如何能在计算机产业日新月异的发展中幸存下来,这些基础理论与知识当是大学本科必须掌握的。时间、精力有限啊!

我从大概是一年前开始接触Ubuntu,回想过去的一年,除了跟着老师学习数据结构与算法,然后好像就没有学到什么东西了(完全是我个人的错误)。虽然期间解决了很多使用Ubuntu过程中遇到的问题,当时很有成就感,现在想起来貌似也没啥太大作用:很多都可以Google到。你会解决的问题,很多人也能。花费了很多精力与时间,换来的并不是长久有效的积淀。很多“技术”“技巧”,都不用换回windows,换个distro可能就失去作用了。哈,vim就是在ubuntu下使用熟练的,这个收获怎么忘记了!虽然我不聪明,但自认是非常肯吃苦、勤奋的学生。我放弃了成绩,只是希望能在本科阶段多学习真正有用的知识和我感兴趣的东西。而浑浑噩噩的一年,回首起来真的惨不忍睹。

过去的一年,我还是尝试了好多的。除了数据结构与算法的基础知识,还接触过Linux系统编程、计算机网络、正则表达式、bash-shell、AWK、SED、操作系统原理、连接(ld,link)、gdb、Makefile、gtk+、python等等,都只是浅显接触下。还有一些开了个头就没有接着做了,感觉暂时还不喜欢。相较一般的同龄人,我还算接触得比较多吧,遇到有些问题也就更能处理些。都不是很深入,深入需要时间,不如暂时知道个大概,遇到某个问题知道xx可以解决再来研究也不迟。把计算机的知识体系看作是树的话,我学习的过程就更像是“广度优先搜索”。但我现在好像有点累了。

慢慢地我发现,我知道的“多”(相较一般的同龄人),但是有什么决定性作用呢?一般都不能解决核心问题:编程的好算法写不出有木有!一个程序最重要的首先还是要能在可以接受的时间空间限制内解决问题,其它都是次要的。至于你是纯C标准库开发还是用到了系统API,至于你是C还是python、至于你是vim编辑还是notepad编辑,至于你是为windows开发还是为linxu开发 等等虽然重要,但“解决问题”本身才是第一位的。例如vim编辑效率超高,但是不会写算法什么都是白搭;有同学就会用notepad(IDE自带的),但就能搞定算法。谁更优秀,我想是后者,他们才是拥有“核心竞争力”的人。//我没有攻击前面举例中双方的任意一方的企图,也没有诋毁这些知识、技术的意思,ta们同样非常重要、各有优劣(当然vim秒杀notepad这点除外),旨在表达我对“数据结构与算法是解决问题最基本的能力”的拥护。列举不是很正确,学识有限,请大神谅解,请菜鸡自行甄别。

所以说,我现在感觉“广度优先”开拓我视野的使命已经告一段落了,现在制约我发展进步的最大因素就是基础知识与理论。开始“深度搜索”吧!正在有计划的补习。不仅仅是数据结构与算法,至少学校开设的基础课程要跟上节奏嘛,计算机组成原理、数据库,下学期的操作系统、以后的计算机网络、编译原理等等都不能落下,所以时间还是相当紧张的。任重而道远啊!

相较而言,GUI就显得不是那么重要了,所以一开始说不想花费太多精力。平时一般也就是标准输入输出,老师有要求当然跟着老师的要求来,没有要求的话就自you了,但是有需要的弄个GUI更好呗,所以还是想掌握一项GUI技术。综上就是想快速掌握一项简单的GUI技术,好吧,我浮躁了。

因为之前的言论触及比较,所以还是澄清下比较好:我列举的都是我喜欢的(notepad和windows除外,但是无论如何感谢ta们在我开始接触计算机时提供的帮助),我认为数据结构与算法比ta们更重要是以我现在这样一个身份所处的上下文说的,ta们都很优秀,感谢ta们给我的生活带来光彩与生气。

以上的那些废话之所以吐出来,是详细表达下我的看法。看起来像是说教,其实是自我剖析,说不定前辈看过之后还能指点我看法中的几个错误呢! 有些弯路少走比较好。

再回到@starwing83大大您的建议吧。
可以看出其实我对GUI库的选择没有特殊要求,“一个能显示常见标准界面的GUI就够了”,需要跨平台。以后估计不会往UI设计方面走。
前辈您的建议“别怕耗费精力,如果耗费的精力不仅仅只耗费在了GUI上,那么就是值得的。”我会好好体会的。
因为一些其它原因准备深入学习下python,所以会先尝试pyGTK,您建议的tcl等也会尝试下的,感谢!


呼,第一次发长文?


论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
27 [报告]
发表于 2013-07-03 10:31 |只看该作者
framebuffer自己画了

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
28 [报告]
发表于 2013-07-03 10:59 |只看该作者
hitcser01 发表于 2013-07-03 08:06
这么长一段,很感谢啊!
我还是先介绍下我的情况吧  
我是本科学生,目前大二(马上大三),没有 ...

你还以为有什么数据结构和算法啊,就是 if/else, for/while ~

论坛徽章:
0
29 [报告]
发表于 2013-07-03 11:10 来自手机 |只看该作者
lz根据你的描述,qt是最适合你的,文档非常丰富,demo非常多,很多情况下,你只需要把demo稍微改下,就能应用你的新程序,特别适合你这种不需要深入研究的。qt的缺点就是太庞大,不只是一个gui,是一套框架,不过也可以很灵活的进行裁剪。还有一个福利就是提供了一套傻瓜试的sdk,直接下载安装就能开发了,还附带一个不输于eclipse的轻量级的ide。跨平台自不用说了。综合起来,根据你的情况来说,这个是最完美的

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
30 [报告]
发表于 2013-07-03 12:58 |只看该作者
回复 26# hitcser01


    Python啊……恩,这样的话是自带GUI的哟。

如果Python的标准库里面自带tk,所以你可以先尝试尝试。

我觉得你现在的感觉,恩,应该来说是属于“儒子可教”型的,但是似乎方向出问题了。

你觉得算法和数据结构重要,对吧?但是这恰好凸显了你没有认识到真正对你来说重要的东西。我给你一个建议,目前来说少做系统什么的事情,比如Ubuntu什么的,这种事情等到深入浅出以后再做。

你真正缺乏的东西,恰好就是广度,是真正的,在编程上的广度。

程序的结构是什么?有了算法你怎么安在程序里面让他工作?这个问题想清楚了,算法往往也就有了。说起来还是中文的博大精深,算法这个词听起来多么牛逼,其实也就是“计算的方法”或者“做事的方法”,你学计算机,就是在学算法。一定注意体会这一点:你学习解决Ubuntu问题,如果能体会到Ubuntu的设计思路,那就是在学习算法,如果你在学习GUI,能体会到GUI的组织手段,那也是算法。千万千万别把算法就当作一些排序啊,深搜啊等等的东西,那些也是算法,但那些是“算题的方法”。

记住,你学任何东西都是在学算法,算法是什么?一个输入,一个输出,怎么从输入得到输出的方法就是算法。你去请教老师得到了输出,那就是一个“请教老师”算法。你真正重要的,是体会,总结,归类计算机里面所有的算法。要保证,遇到一个问题,至少你能马上想出一个垫底的方法作为后备,然后慢慢去想最好的方法。

对了,这里的“方法”,就是算法。

我的意思是,光说“学算法学算法”其实没有任何意义,你想学的不是那种所谓“算题的方法”,你真正要学习的东西实际上是一种“解决问题的思路”。这些思路是分为很多很多方面的:
  - 算法思路:我有一个问题,怎么解决?怎么很快地解决?怎么知道解决问题的最快方法?这是传统的算法,思路有这么一些,你自己体会一下:枚举,分治,递归。
  - 问题思路:我的问题到底是什么?我要解决的问题,怎么和计算机映射在一起?这是“建模”的算法。你要做什么,和你有什么之间的联系。这里的思路也有一些:分层,服务提供,协作
  - 工程思路:我的程序怎么写?怎么感觉要加一个新功能整个程序都得动?怎么才能让程序尽可能简单明了,让程序尽量让所有人都看得懂,都知道怎么往里面加新东西?这是“工程”的算法,怎么让程序优美,优雅,简单,明了。这里的思路还是有很多:隔离,抽象,接口。

这基本上是编程需要的几个最重要的思路了。你的学习,不应该局限在传统的算法里面,不要以为那些东西就是算法和数据结构了。你看到一片海,你才知道怎么渡海,这里就是在告诉你,其实这片海很宽阔,你需要修正你的方向。

换言之,用一种“为什么要这么做”的思维去学习,可以事半功倍。这是很重要的。你现在不要对基础知识有任何的“神圣感”,他们和认字差不多,都知道有这么些东西即可,然后你就需要计划一下,到底学习什么,到底从哪儿出发,到哪儿去了。相信等你涵盖了上面所有的算法思路以后,你就知道你要往哪儿走了。GUI这种问题对你来说,也就只是很平凡的问题了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP