Windows API 中的一个窗口 UI 的第一步 Windows API 菜单 Windows API 对话框 Windows API 控件 I Windows API 控件 II Windows...API 控件 III Windows API 中的高级控件 Windows API 中的自定义控件 Windows API 中的 GDI PyQt4 教程 PyQt4 简介 PyQt4 中的第一个程序...PyQt5 中的俄罗斯方块 Qt4 教程 Qt4 工具包简介 Qt4 实用程序类 Qt4 中的字符串 Qt4 中的日期和时间 在 Qt4 中使用文件和目录 Qt4 中的第一个程序 Qt4 中的菜单和工具栏...wxWidgets 中的对话框 wxWidgets 小部件 wxWidgets 小部件 II wxWidgets 中的拖放 wxWidgets 中的设备上下文 wxWidgets 中的自定义小部件 wxWidgets...Java Gnome 中用 Cairo 绘图 Cario 绘图 II Java Gnome 中的 Nibbles QtJambi 教程 QtJambi 简介 QtJambi 中的布局管理 QtJambi
我读研的时候,沉迷于 Windows 编程而不能自拔,那个时候也和楼主有一样的困惑。毕业的时候找工作,非 Windows C/C++ 岗位不去,因为技术功底比较好,很快就成为客户端负责人。...而且 Windows 在新旧系统兼容性方面做的也非常优秀,即使在最新的 Windows 操作系统上使用很老的 Windows API 仍然没什么问题,虽然很多 API 或者做法不推荐在新版系统中使用,但是你使用仍然不会有什么大问题...这也是 Windows 和 Linux 的不同,Windows 的哲学是你不会操作,Windows 教你如何操作;而 Linux 是假设你会操作。...所谓 DUI,即 Direct Draw on Parent ,即直接子控件对象直接绘制在父窗口上,也就是相当于只有父窗口一个窗口句柄。...为了减少这些消息泵,子窗口直接绘制在父窗口上,然后利用 PtInRect 这样的 API 函数去检测鼠标是否位于这些绘制出来的控件上,然后利用 PostMessage/SendMessage 这样的 API
api实现(需要借助node-ffi调用dll解决),所以就对各个方案做对比做最后的决策(其实还是在纠结用C#.net还是Electron,其它的方案并不考虑)。...Windows 下的 GUI 方案 Windows 下的 GUI 解决方案比较多: 基于 C++ 的有 Qt、MFC、WTL、wxWidgets、DirectUI、Htmlayout; 基于 C# 的有...WPF和Winform最大的区别在于WPF底层使用的DirectX,Winform底层使用的是GDI+,所以WPF的图形界面上更胜一筹 GDI+(Graphics Device Interface)图形设备接口....NET Core 更适合跨平台的需求, .NET Core 的应用程序支持在 Windows, Linux, and macOS 运行。...在容器化大行其道的今天,.NET Core 的模块化、轻量级以及它的灵活性使得它能很容易地部署到容器中,容器可以部署到任何平台,如 云上、Linux 和 Windows 上。
但是要说效率,在windows平台上,gcc的效率还是比不上vc的。...Code::Blocks由纯粹的C++语言开发完成,它使用了著名的图形界面库wxWidgets(3.x)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢。...虽然Code::Blocks从一开始就追求跨平台目标,但是最初的开发重点是Windows平台,从06年3月21日版本:1.0 revision 2220开始,Code::Blocks在它的每日构建中正式提供...GNU/Linux版本,这样 Code::Blocks在1.0发布时就成为了跨越平台的C/C++IDE,支持Windows和GNU/Linux。...应用、wxSmith工程,另外它还支持用户自定义工程模板。
关于兼容性 由于Qt使用的是非标准C++,与其它库的兼容性会存在问题,在每个平台的图形界面也并不完全是原生界面( Native GUI),只是透过 theme 去模拟系統上的标准 GUI,所以看起來很像...wxWidgets使用的是标准C++,与现有各类工具库无缝连接,在不同平台上也是完全Native GUI,是真正的跨平台。...在wxPython中,我习惯把事件分为4类: 控件事件:发生在控件上的事件,比如按钮被按下、输入框内容改变等 鼠标事件:鼠标左右中键和滚轮动作,以及鼠标移动等事件 键盘事件:用户敲击键盘产生的事件 系统事件...动态布局 在“事件和事件驱动”的例子里,输入框、按钮等控件的布局,使用的是绝对定位,我习惯叫做静态布局。静态布局非常直观,但不能自动适应窗口的大小变化。...DC可以在屏幕上绘制点线面,当然也可以绘制文本和图像。事实上,在底层所有控件都是以位图形式绘制在屏幕上的,这意味着,我们一旦掌握了DC这个工具,就可以自己创造我们想要的控件了。
在对游戏引擎的支持上,Orge和CEGUI整合得非常好,是Orge的官方指定特约UI库。在更换接口部分之后,CEGUI理论上可以支持所有引擎。...如:Windows、Unix和Mac,详见http://www.wxwidgets.org)实现。...在不使用layout文件时,CEGUI是不太方便的,因为要定位控件,常常得修改文件当中的参数,如果在c++文件当中修改,每次都编译,很恶心(尤其是在有编辑器的情况下,使用c++就不能使用了)。...这个编辑器还是使用wxWidgets,配置工程同前文提到的LayoutEditor。 0.5版本的ImagesetEditor编辑器在功能上有所改观,但是问题还是不少。...同样,在正式使用之前,需要大家修改和完善它。 在使用ImgesetEditor方面,由于它完成的功能较为简单,因此其使用没有LayoutEditor那么多的说法,只要给切好的图的名字写好就ok了。
比如说,将 Windows 平台上的按钮控件和 Mac OS 上的按钮组件都取名为 Button。...当你使用 Button 时,如果在 Windows 平台上,则编译成按钮控件;如果在 Mac OS 上,则编译成按钮组件。...比如 Mac OS 的文本框自带拼写检测,但是 Windows 上面没有,则不能提供该功能。这种策略的典型代表是 wxWidgets。这也是一个标准的 C++ 库,和 Qt 一样庞大。...有些工具库利用这些基本函数,再不同绘制出自己的组件,这就是 GUI 模拟。GUI 模拟的工作量无疑是很大的,因为需要使用最基本的绘图函数将所有组件画出来;并且这种绘制很难保证和原生组件一模一样。...Qt 和 wxWidgets 一样,也是一个标准的 C++ 库。
我就废话不多说了,大家还是直接看代码吧!...前使用 backend 从种类上,分为可交互型(user interface)和不可交互型两种(hardcopy),如果希望查看本地支持的 backend 有哪些,可以使用 matplotlib.rcsetup.interactive_bk...交互模式 我理解,“交互模式”即代表着这个图标在绘制后可以动态变化,例如预设的动画以及用户的操作。...:使用 Cairo 引擎渲染 可交互型 Qt5Agg:使用 Qt5 渲染,IPython 中可使用 %matplotlib qt5 Qt4Agg:使用 Qt4 渲染,IPython 中可使用 %matplotlib...osx nbAgg:Jupyter Notebook 中使用的 backend,Jupyter 中使用 %matplotlib notebook 来激活 WXAgg:使用 wxWidgets 库来渲染
wxWidgets 是基于操作系统的 API 来做桌面应用的,也就是说,在 Windows 下开发一个桌面应用时,看起来就像是传统的 Windows 桌面软件的风格,在 Mac 下则是 Mac 的风格,...也就是说,使用wxWidgets 在三个平台上都是按照三个平台自己的 API 来绘制这个按钮的。wxWidgets 提供了非常多的操作系统的 API,并且可以做到静态链接,但小问题比较多。...之所以在平台桌面应用开发框架中介绍,就是除了FinClip移动端跨端开发的能力,它还支持在手机以外,如Windows、Mac、Linux、统信、麒麟等平台下运行小程序,这意味着,移动端、PC 端、IOT...同时,它还提供一个完善的后台管理系统,统一管理小程序的上架和下架、监测小程序的使用详情,换句话说,借助该工具,可以借助微信小程序生态的成熟度,快速引入业务生态来壮大、丰富自己的业务场景,实现技术和业务双降本增效...2022年5月,Google 在 Google I/O 2022 发布了 Flutter 3.0版本,宣布对 Windows、macOS、Linux 桌面操作系统提供支持。
它内置了自绘引擎,也就是说界面上的一个按钮,一个文本框,都是Qt的引擎自己画的,这保证了基于Qt开发的软件界面在不同操作系统上看起来是一模一样的。...甚至在Windows下编译一下GTK的源码都要比Linux下难很多。 而且GTK的渲染引擎在Windows下性能表现也不如在Linux下好。...GTK在Windows上也没办法静态连接,倒不是因为版权的问题,而是它依赖了MSYS2的一些库,这个库用于在Windows上模拟Linux环境,这也是为什么GTK在Windows上表现不佳的原因之一。...但框架本身还有一些问题,比如对高分屏支持不佳、特殊控件绘制上也有一些小问题, 除了界面相关的API外,几乎没有提供系统级的API,作者纯粹是用爱发电来开发这个框架,所以更新不是很及时。..., Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2), 它是不支持Win7的。
这些文件我都是先拷贝CEGUI原本的一些控件代码,然后更改的。其实可以做一个CEGUI新控件模板文件,这样以后添加新控件就方便多了。...控件的逻辑模块就完成了,我们还需要将控件加到CEGUI系统中,在System::addStandardWindowFactories()函数中,添加一行: WindowFactoryManager::...在头文件包含路径,以及lib文件路径,以及PostEvent命令中,解决方案使用了$(CEGUI_7),$(WXWIDGETS_7),$(CE_LAYOUT_EDITOR_7)等环境变量,我们需要新建3...但是在控件属性上,我们还无法设置我们新控件的两个属性【TimerFormatText】【TotalTime】,为了能让CELayoutEditor中识别这两个属性,我们需要修改CELayoutEditor.ini...修改完成后,我们在新添加的TimerWindow控件上,能找到这个两个属性,并进行设置了。加载layout文件,测试很顺利。
在本例中,我们使用 “None” 来表示这个frame是顶层的框架,没有父框架;使用 “wx.ID_ANY” 让 wxWidgets 来给我们挑选一个ID。...另外 wxWidgets 还提供了其它的标准 ID(v2.8)。 你也可以自定义一个ID,但 Getting Started with wxPython 认为,没有理由那样做,用标准ID更好。...当人们谈论GUI的时候,他们通常指的是windows,menus和icons。那么自然地,你可能会认为应该用wx.Window来代表屏幕上的一个window。但实际上不是这样的。...如果有一个现成的标准ID,最好还是使用它,而不要自定义。因为这样可以让wxWidgets知道,在不同的平台怎样去显示这个组件,使它看起来更美观。...Panel 的主要目的是在功能性和外观上和对话框相似,但是又有作为父窗口的灵活性。 事实上, 对于那些处理文字录入的对象(通常被称作控件或组件)来说,Panel 就是个灰色的背景。
它使用wxWidgets作为底层GUI框架,可以将几乎所有python命令行程序转换为GUI程序,它生成的界面如下图所示: 它的原理简单来说,就是把命令行解析器(argparse)解析到的命令行参数转换成对应的输入控件...它的使用也确实足够简单,有时候一个装饰器@Gooey就解决了问题。...但是,我最后还是没有选择使用Gooey,这里有几个原因:一是在我的机器上Gooey生成的界面总感觉有些卡卡的(不知道是不是因为wxWidgets在Windows平台上有些“水土不服”);二是在高分屏上,...PyGUIAdapter在设计之初就考虑到了扩展性和灵活性的问题,我们既可以依赖内置的规则,由function2widgets库自动推导函数参数所对应的控件类型;我们也可以通过一些方法,手动指定参数的控件类型...4.一些常用的自定义方法 当然,你可能会提出,根据语义,path使用一个专门编辑路径的控件更合适,content用一个多行文本控件会更好,每个参数名称如果可以自定义就好了,如果有详细的说明就更好....
它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。PyQt采用双许可证,开发人员可以选择GPL和商业许可。...QT带来的最大好处就是它有一个QT Desiginer,这个设计器可以方便我们进行页面的布局,可以说在Tkinter里面需要一坨坨的代码完成的页面布局,在QT里面只要拖一拖控件就搞定了。 ?...它还内置许多用户界面控件如:按纽、摄影机、表格、Slider和树形控件等。 PyGTK -GTK 在Linux中常用的“GTK+”是“PyGTK”的“GTK +”封装。...与Kivy和PyQt相比,它能不加修改的稳定运行在各种操作系统之上,如Linux,Windows,MacOS等。...只需要有 Python 和浏览器就可以运行 CEF Python 基于Google Chromium,面向Windows,MAC OS和Linux,其主要用于在第三方应用程序中嵌入式浏览器的使用上 Dabo
我读研的时候,曾沉迷于 Windows 编程而不能自拔,那个时候也和楼主有一样的困惑。毕业的时候找工作,非 Windows C/C++ 岗位不去,因为技术功底比较好,很快就成为客户端负责人。...而且 Windows 在新旧系统兼容性方面做的也非常优秀,即使在最新的 Windows 操作系统上使用很老的 Windows API 仍然没什么问题,虽然很多 API 或者做法不推荐在新版系统中使用,但是你使用仍然不会有什么大问题...这也是 Windows 和 Linux 的不同,Windows 的哲学是你不会操作,Windows 教你如何操作;而 Linux 是假设你会操作。...所谓 DUI,即 Direct Draw on Parent ,即直接子控件对象直接绘制在父窗口上,也就是相当于只有父窗口一个窗口句柄。...为了减少这些消息泵,子窗口直接绘制在父窗口上,然后利用 PtInRect 这样的 API 函数去检测鼠标是否位于这些绘制出来的控件上,然后利用 PostMessage/SendMessage 这样的 API
这些工具包中的每一个都将与Windows、macOS和Linux一起工作,而PyQt具有在移动设备上工作的附加功能。...PyQt和Tkinter都自己绘制小部件,这就是为什么它们并不总是去匹配本机小部件,尽管PyQt已经非常接近了。 这并不是说wxPython不支持自定义小部件。...GUI的定义 正如在介绍中提到的,图形用户界面(GUI)是在屏幕上绘制的供用户交互的界面。 用户界面有一些共同的组件: 主窗口 菜单 工具栏 按钮 文本输入 标签 所有这些项目通常称为小部件。...在本例中,你告诉wxPython框架没有父框架,它的标题是Hello World。下面是运行代码时的样子: ? 注意:当你在Mac或Windows上运行应用程序时,它看起来会有所不同。...这个小部件不是必需的,但是推荐使用。在Windows上,你实际上需要使用一个面板,以便框架的背景颜色是正确的灰色阴影。如果在Windows上没有面板,则禁用选项卡遍历。
现在可以在即将发布的 Python 3.7 上使用betas了,在 Windows 上更好地支持外部错误处理,并支持 C 语言中更多的现代标准类型,例如 float/double _Complex 和...PyInstaller 在不久之后可能添加的一个功能是交叉打包,例如,在 Windows 上创建 Mac 兼容的应用程序。...你需要在要部署的同一平台上运行该 PyInstaller ,无论是 Windows、Mac 还是 Linux 。 何处下载 PyInstaller 3.3 ?...Windows、Mac、Linux 和其他类 Unix 操作系统。...在正式发布前它可能会更新数次,注意经常检查更新。 那些想直接破解的人可以查看 GitHub 上的代码库(https://github.com/wxWidgets/Phoenix)。
Tkinter包含了对Tk的低 级接口模块,低级接口并不会被应用级程序员直接使用,通常是一个共享库(或DLL),但是在一些情况下它也被Python解释器静态链接。...就如同Python和wxWidgets一样,wxPython也是一款开源软件,并且具有非常优秀的跨平台能力,能够运行在32位windows、绝大多数的Unix或类Unix系统、Macintosh OS...建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。...tkinter.messagebox import showinfo, showwarning, showerror #各种类型的提示框 在进行界面绘制之前你需要初始化Tk() root = Tk()...使用grid能让你更容易把握控件的位置,你可以指定它出现在几行几列,是否跨行跨列,跨几行等等 ?
一样,被各种不同的团体和组织改造和扩充,并使它能够适应不同的应用领域和拥有更强大的功能。...MinGW 是一个Windows下的编译器(实际上是一系列开发工具)。...与Windows下其它编译器不同的是,MinGW与Linux下广泛使用的GNU(基本上)完全兼容,这意味着,在Linux下如何编译源代码,在MinGW中也可以以完全相同的方式编译。...由于它使用 wxWidgets,所以能够支持 Linux 和 Windows 系统。Code::Blocks 使用 GNU C++ 开发,具有开发包和插件支持。...环境配置 先创建一个工程,由于C::B里内置了OGRE的模板,所以起个工程名就OK了 编译,提示找不到OgreMain_d……….
它具有各种平台的本机外观和感觉,包括Windows,macOS和Linux。...使用 wxPython,您可以使用各种小部件(例如按钮、文本控件,当然还有工具栏)设计具有视觉吸引力且响应迅速的桌面应用程序。...创建从 wx 继承的自定义窗口类。框架。 通过调用父类构造函数并将窗口标题作为参数传递来初始化自定义窗口类。 在框架内创建一个面板以容纳微件。...使用 Centre() 方法将窗口居中显示在屏幕上。 使用 Show() 方法显示自定义窗口。 使用 wx 创建 wxPython 应用程序。应用()。 创建并显示自定义窗口对象。...面板用于保存wxPython应用程序中的小部件(控件)。 使用 CreateToolBar() 方法为窗口创建一个工具栏。
领取专属 10元无门槛券
手把手带您无忧上云