文档章节

Golang、python在window下设计界面UI第一节。

大洋的顶端
 大洋的顶端
发布于 2017/03/17 17:19
字数 965
阅读 501
收藏 0

说起界面,这是一道坎,有人或许会说,GO为什么要写界面UI呢,这本来不是GO擅长的部分,也不是GO该干的事情,这句话我就不爱听了。

举个列子,比如我们用GO语言写个服务器,这个服务器就是用作直播视频聊天的服务器,它的功能包含直播房间在线列表人员,当然GO语言设计的时候,服务器记录了在线列表的 userId、roomId、token、level、ip、chatConent等等。比如我们要监视某个房间的人员列表,看他是否用协议刷了人气,其实就是统计一个IP上有多少帐号,或者监控房间里面是否有机器人在发言,并随时封禁它,或者统计在线直播列表的人数等等,我们用命令行是能够操作上述的东西,但是这么多的动作你能记得住那么多的命令吗?

而且上述那么多的东西显示在黑色框子里面,眼睛看久了不累吗?一旦命令行用错了,承担起后果吗?

在命令行里面去选择一个用户或者房间那是一件多么痛苦的事情啊。

而且这些后台管理员又不是技术人员,很可能会出错。

因此界面是必须有的。

GO语言中选择界面是一件纠结的事情,github上面GO-UI要么项目几年没人更新了,要么简单的功能让人不多看一眼。

比如 谷歌自带gxui已经死掉了,goqt的下载一大堆的东西去配置,go-gtk配置也麻烦,而且功能也是简单。

假如在linux下,我建议还是选择后面的两个,那是没得选择的选择。

在WINODWS 目前推荐https://github.com/lxn/walk 这个东西,目前在GITHUB上最新的版本是需要GO1.8去构建的,否则百分百会出错。

下载下来看下demo

有复制粘帖、数据绑定、图片显示、webkit、绘图、listbox、托盘、tab、滑动条、拖动文件、进度条、按钮、选择框、单选框等等。功能挺全面的,可以去实验下。

 

先来了解下句柄,什么叫做句柄?句柄可以说是windows上集合所有打开了的界面程序上的控件ID一样,代表了唯一身份,其实底层还是指针,每次打开程序,句柄由系统随机分配命名,不存在两个句柄是一样的。句柄包含了窗口句柄和控件句柄。

walk下载下来的包这么小,而且编译出来的程序也这么小,那就肯定是调用了WINDOWS内置的一些com组件和active控件,这些东西存在于DLL中,一般位于在system32目录下或者程序运行的当前目录下,像QT5这些不是调用window内置的,因此QT编译出来的程序是找不到控件句柄的。比如QQ、YY、迅雷这些软件是找不到控件的句柄的,只能找到窗口句柄,因为这些控件是DX画出来了。

句柄是一个类似整数一样的数值。

在windows设计不同语言的交互的时候,dll文件是一条逃不过去的坑,先来看下C/C++、GO的类型不同的定义

 

Win32 C/C++ golang 字符对照表

    WIN32类型        C/C++ 类型            GO 类型
    HANDLE             void *                    uintptr
    BYTE                  unsigned char        uint8, byte
    SHORT               short                      int16
    WORD               unsigned short       uint16
    INT                    int                          int32, int
    UINT                 unsigned int           uint32
    LONG                long                       int32
    BOOL                int                           int
    DWORD            unsigned long         uint32
    ULONG             unsigned long         uint32
    CHAR                char                        byte
    WCHAR             wchar_t                   uint16
    LPSTR                utf8/char *              *byte
    LPCSTR              const utf8/char *     *byte, syscall.StringBytePtr(), xc.UTF8PtrToSting()
    LPWSTR             wchar_t *                 *uint16
    LPCWSTR           const wchar_t *        *uint16, syscall.StringToUTF16Ptr()
    FLOAT               float                          float32
    DOUBLE            double                      float64
    LONGLONG       __int64                       int64
    DWORD64         unsigned __int64        uint64

 

 

 

© 著作权归作者所有

大洋的顶端
粉丝 18
博文 30
码字总数 13805
作品 0
广州
私信 提问
Eric:Python的IDE之eric的简介、安装、使用方法之详细攻略——Jason Niu

Eric的简介 Eric是一个完整的Python编辑器和IDE,用Python编写。它是基于跨平台QT-UI工具包,集成了高度灵活的闪烁编辑器控件。它被设计成可用作为“每日”的快速和肮脏的编辑器,以及作为一...

qq_41185868
2018/05/24
0
0
PyQT5速成教程-2 Qt Designer介绍与入门

Qt Designer的介绍 在PyQt中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成。Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。Qt Desi...

养薛定谔的猫
2018/06/04
0
0
上次被人说TK不好咯,这次给你整个高大上的

0.环境 操作系统:Windows Python版本:3.6.0 1.前言 PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。 2.效果图 3.环境安装 3.1 依赖包...

上海小胖
03/29
30
0
gopub — 跨平台企业级运维发布系统

gopub(基于vue.js element框架+golang beego框架开发)是一个基于运维场景设计的企业级运维发布系统。配置简单、功能完善、界面流畅、开箱即用!支持git、jenkins版本管理,支持各种web代码...

h4cd
2018/04/09
122
0
PYQT4 + Python2.7 + eric4-4.2.2a的安装全过程

第一步:下载Python2.7最新版本,(不推荐下载3.0版本,新版本还在测试中) http://www.python.org/ftp/python/2.7/python-2.7.msi 下载PyQt-Py2.7-x86-gpl-4.9.5-1.exe http://www.riverba...

durban
2012/10/06
11K
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
27分钟前
4
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
59分钟前
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部