wxPython的GUI文本编辑框E4A怎么把内容保存如何保存

wxPython是Python语言的一套优秀的GUI图形库我們可以使用Python程序很方便的创建完整的、功能键全的GUI用户界面。 wxPython是作为优秀的跨平台GUI库wxWidgets的Python封装和Python模块的方式提供给用户的

首先需要安装wxpython库,按照下面的方法开始安装:

安装完成以后,就可以使用wxpython编写可视化窗口的应用了妈妈再也不担心我不会前端开发了。

废话不多说先上实战代码,你可以运行起来体验一下。

本文参与欢迎正在阅读的你也加入,一起分享

Python是一种解释型、面向对象、动态數据类型的高级程序设计语言Python GUI图形库允许Python程序员很便利的建立完整的、功能键全的GUI用户界面。作为Python开发者你早晚城市用到图形用户界媔来开发应用,wxPython和PyQt是两个最受欢迎的Python GUI框架它们之间有何区别?在实际应用中又该如何选择呢?

外观 根据我们的经验,大大都用户在使用应用程序时首先关注的一定是应用程序的外观所以我们先来比较一下wxPython和PyQt的外观。

wxPython是Python语言对流行的wxWidgets跨平台GUI工具库的绑定而wxWidgets是用C++语言写成的,所以在GUI中编写按钮小部件的代码时不会看到类似于另一个操作系统的工具。

PyQt也是使用C++编写的它基于著名的Qt工具包。与wxPython不合的是它不使用native

widget,而是根据它检测到操作系统建立小部件的近似值可是它的近似可以说是做到了极致,就连艺术生基本都辩白不出其与原生有何不匼

如果您使用KDE,可以使用其他PyKDE库来弥补原始PyQt与Linux和BSD之间Plasma desktop外观之间的差距但这增加了新的依赖关系。

跨平台 wxPython和PyQt都支持LinuxWindows和Mac,因此它们都很昰适合跨平台;可是这种跨平台其实不是无条件的想要你的Python代码在特定平台中运行还需要进行一些调剂,如GUI工具包无法将路径格式调剂为數据目录因此必须在Python中运行最佳实践,使用os.path.join和几个不合的退出体例等等 GUI工具包的选择不会从平台上神奇地抽象出来。

PyQt正在努力的消除跨平台差别允许Python自己需要的常见调剂。PyQt可以避免大大都跨平台问题所以在不合的操作系统中,GUI代码基本都可以连结不变

在wxPython中,用户鈳能就需要根据编程E4A怎么把内容保存对不合平台中的GUI代码做一些调剂例如,为了避免Microsoft Windows上的某些元素闪烁USE_BUFFERED_DC属性必须设置为True才能对图形进荇双缓冲。这不是默认的即使可以无条件地对所有平台进行操作,因此在某些用例中可能存在缺陷

安装 作为开发人员,您可能不关心獲取应用程序所需的库所需的安装步调; 可是如果您计划分发应用程序,则需要考虑用户为了使程序运行所必须执行的安装过程

在所有岼台上安装Qt与安装任何其他应用程序一样简单, 给用户一个下载的链接然后安装下载的软件包即可使用。

PyQt依赖于Qt自己的C ++代码这意味着鼡户不但要安装PyQt,并且还要安装所有的Qt这个操作没有之前的安装那么简单,可是Qt和PyQt团队已经尽可能简化安装操作了就现在来看,只要昰会安装浏览器或游戏的用户都可以通过链接成功安装Qt,如果用户十分擅长用户甚至可以将安装脚本作为自己的安装程序的一部分。

茬LinuxBSD和Ilumos中,安装程序通常由经销商的软件包管理员为用户编写

在Linux和Windows上,wxPython的安装过程很是简单但在Mac OS上是有问题的。如果可下载的软件包嚴重过时Mac OS晦气于向后兼容。由于存在修复程序的毛病代码程序包没有被更新,所以用户自己找到并实现修补程序的机会很低现在的解决方案是打包wxPython并将其分发给Mac OS用户,或者依靠外部程序包管理器

部件和功能 PyQt和wxPython都具有用户期望从GUI工具包(包含按钮,复选框下拉菜单等)Φ获得的所有经常使用小部件。 两者都支持拖放操作标签式界面,对话框和建立自界说小部件

PyQt具有灵活性的优点。 您可以在运行时重噺排列浮动,关闭和还原Qt面板为每个应用程序提供高度可配置的以可用性为中心的界面。

只要您使用正确的小部件就可以为用户提供很多友好的功能,而没必要自己去重新思考花哨的技巧

WxPython具有很多很好的功能,但它在灵活性和用户控制方面不克不及和PyQt相提并论PyQt更噫于开发人员设计和结构,在开发Qt之前要先花费一些时间从用户获取跟踪自界说结构的体例,或者如何找到意外关闭的丢失面板等等洏对wxPython来说,想要重新打开因意外关闭的面板则是件困难的事情

总体来说,wxPython究竟结果只是wxWidgets的前端所以如果你真的需要一个功能,你可以鼡C ++实现它然后在wxPython中使用它。与PyQt相比wxPython的学习曲线更加峻峭一些。

通信 GUI应用程序由许多较小的视觉元素组成通常称为“小部件”。 为了使GUI应用程序顺利运行小部件必须彼此通信,例如用于显示图像的窗格可以知道用户选择了哪个缩略图。大大都GUI工具包包含wxPython,都可以措置和“callback”的内部通信 回调是指向某段代码(“函数”)的指针。如果您想要点击某个按钮小部件时产生某些事情那么你就要为这个产生嘚操作编写函数,当点击按钮时触发函数,产生操作

如果它和Lambda表达式结合起来将会产生一个很是灵活的解决方案,达到的效果可能会跨越你的预期

另一方面,Qt以信号/槽机制而闻名如果您将wxPython的内部通信网络比方为旧式德律风交换机,那么PyQt的通信则可以视为网状网络

Qt使用了信号和槽来取代回调函数。当一个特定的事件产生时信号会被发送出去。Qt的窗体部件(widget)拥有众多预先界说好的信号固然,我们也鈳以建立窗体部件(widget)的子类来为它们添加我们需要的自界说信号槽,则是对一个特定的信号进行的反馈Qt的窗体部件(widget)同样拥有众多预先界說好的槽,可是通常的做法是建立窗体部件(widget)的子类并添加自界说槽,以便对感兴趣的信号进行措置

信号和槽机制是类型平安的(type-safe):一个信号的参数必须和接收槽的参数匹配。由于这种参数匹配机制编译器以帮忙我们检查类型不匹配的签名。信号与槽是松耦合(loosely coupled)的:一个发絀信号的类既不知道也不关心哪一个槽接收到这个信号Qt的信号和槽机制包管了如果你将一个信号连接到一个槽上,槽会在正确的时间以號的参数被挪用信号与槽可以携带任意个、任意类型的参数。他们是完全的类型平安

所有从QObject或者它的一个子类(好比:QWidget)继承的类都可以使用号与槽。对象中以这种体例通信:一个对象的状态产生了改变并发送信号关心这个改变的另一对像接收到这个信号。发送信号的对潒其实不知道也不感兴趣什么对象接收它所发出的信号这是真正的信息封装,包管了对象能被看成软件组件来使用

槽能被用来接收信號,除此之外它们也是普通的成员函数槽不知道是否有信号与它连接起来,正如对象不知道它发出信号是否会被接收一样这样的机制確保了可以使用Qt建立一个个完全自力的组件。

信号可以与槽进行多对多的连接就这样,信号与插槽建立了强大的组件编程机制

结构 编寫一个GUI应用程序,首先要做的就是设计结构以便将所有窗口小部件都合适的结构在应用程序窗口中。和设计网页一样你可以调剂应用程序的巨细,甚至可以将其设置为固定巨细

这里大大都的困惑都集中在基础级的GUI元素中。 例如如果您正在编写应用程序,您是否能从QMainWindow戓QWidget开始构建您的父窗口?

QWidget是一个空的容器能被所有其他小部件使用,固然也能放置更多的QWidget来形成放置更多小部件的父窗口QMainWindow使用QWidget,增加了夶大都应用程序需要的许多便当功能如顶部的工具栏,底部的状态栏等

这是一个使用QMainWindow的小型文本编辑器,只有100多行Python代码:

wxPython中的基础小蔀件是wx.Window wxPython中的所有E4A怎么把内容保存都是基于wx.Window类的,无论是实际的窗口还是按钮复选框或文本标签。如果类名写错了wx.Window将直接忽略。

下图昰使用wx.Frame建立一个空的窗口:

将其他小部件放在wx.Frame窗口中然后构建GUI应用程序。 例如wx.Panel小部件类似于具有绝对巨细约束的HTML中的div,因此您可以使鼡它在主窗口中建立面板

与PyQt相比,WxPython具有较少的便捷功能 例如,复制和粘贴功能是建立在PyQt中的而在wxPython中必须手工编码(并且有部分还受其運行的平台的限制)。

wxPython中的简单文本编辑器:

你应该使用哪一个呢? PyQt和wxPython GUI工具包都有自己的优势

WxPython在大大都情况下的应用都是比较简单的,即使茬使用过程中呈现一些难题对Python程序员来说也是很直观、易于解决的。你没必要学习太多的“wxWidget way”实例它可以将零七碎八的工具包放置在GUIΦ,如果你定位的用户空间已安装GTK那么wxPython会以最小的依赖关系轻轻松开。

WxPython使用原生小部件使得开发的应用程序与计算机上的应用程序几乎沒有不合另外,对wxPython的跨平台不要期待太高它有时会在某些平台上呈现安装问题,因为它没有提供多层抽象来屏蔽平台之间的差别

PyQt比較大,总是需要安装一些依赖关系(特别是在非Linux和非BSD中)沉重的代码也带来了很多便当性,Qt几乎可以完全支持跨平台同时也提供了很多预置的功能和部件,这对依靠Qt作为基础框架的公司和一些开源项目来说都是很是重要的

至于WxPython和PyQt到底要选择哪个,其实是没有定论的首先伱要看它们的哪些点吸引或者说是吸引了你,其次如果你是一个成熟的程序员你要可以选择自己更擅长的,最重要的要根据项目的实际需求来进行选择

我要回帖

更多关于 E4A怎么把内容保存 的文章

 

随机推荐