较为常用的GUI工具
Tkinter
可以在大多数的Unix平台下使用,
同样可以应用在Windows和Mac系统里。Tk80的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
优点:是Python的内置库,无需额外下载,不存在兼容问题,且又非常详细的说明文档。
缺点:实现效果较为普通。
wxPython
是一个创建桌面GUI应用的跨平台工具包,它的主要开发者是Robin
Dunn。使用wxPython,开发者可以在Windows、Mac和多种Unix系统上开发应用程序。
优点:是一个免费的,可移植的GUI类库,用C++编写,可在Windows,Mac OS
X,GTK,X11等许多平台上使用。可用于多种语言,包括Python,Perl,Ruby等。
缺点:设计的界面美观程度和灵活性较为普通。
PyQT
是Qt框架的Python语言实现,也是最强大的GUI库之一。
PyQt提供了一个设计良好的窗口控件集合,每一个PyQt控件都对应一个Qt控件,因此PyQt的API接口与Qt的API接口很接近,但PyQt不再使用QMake系统和Q_OBJECT宏。
优点:功能非常强大,可以用PyQt5开很漂亮的界面;另外它支持可视化界面设计,对新手非常友好,可以通过拖动一些模块就可以完成一些代码才能完成的工作,就跟C++的QT是一样的。
缺点:学习起来有一定难度。
PyGtk
优点:跟PyQt一样,可以实现很不错的效果,但是稍逊于PyQt,并且同样有UI设计工具Glade。
缺点:更适合GNOME平台。
Kivy
优点:是一个开源的Python框架,用于快速开发应用,实现各种当前流行的用户界面,比如多点触摸等等,可以运行于Windows,Linux, MacOS,
Android,
iOS等当前绝大部分主流桌面/移动端 *** 作系统。Kivy基于Python,界面文件和程序文件相互分离的设计思路,设计简洁优雅,语法易学,适合新人入门。
缺点:只有一个中文文档还是特别全面,大多数教程还是英文版本。
PYTHON是一门编程语言啊,
图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机 *** 作用户界面。
只是说用python开发gui的程序很方便吧
版本不兼容啊。你卸载31,然后把c盘的python33, python31目录彻底删除, 然后进入注册表,把python相关的注册项再删除,然后重新安装python31就可以了。
如果你有探索精神,就直接进入python31的目录,在命令行下,输入idlepy应该可以成功。 然后你再对比一下你的菜单上的idle,看看它是不是指向了31目录。 如果指向了,则问题出在注册表上,修改相应的项就可以。
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,Python GUI图形库允许Python程序员很方便的创建完整的、功能键全的GUI用户界面。作为Python开发者,你迟早都会用到图形用户界面来开发应用,wxPython和PyQt是两个最受欢迎的Python GUI框架,它们之间有何区别在实际应用中又该如何选择呢
外观
根据我们的经验,大多数用户在使用应用程序时首先关注的一定是应用程序的外观,所以我们先来比较一下wxPython和PyQt的外观。
wxPython是Python语言对流行的wxWidgets跨平台GUI工具库的绑定。而wxWidgets是用C++语言写成的,所以在GUI中编写按钮小部件的代码时,不会看到类似于另一个 *** 作系统的东西。
▲基于Linux的Thunar和wxPython
PyQt也是使用C++编写的,它基于著名的Qt工具包。与wxPython不同的是,它不使用native
widget,而是根据它检测到 *** 作系统创建小部件的近似值。但是它的近似可以说是做到了极致,就连艺术生基本都分辨不出其与原生有何不同。
如果您使用KDE,可以使用其他PyKDE库来弥补原始PyQt与Linux和BSD之间Plasma desktop外观之间的差距,但这增加了新的依赖关系。
▲基于Linux的KDE和Qt
跨平台
wxPython和PyQt都支持Linux,Windows和Mac,因此它们都非常适合跨平台;但是这种跨平台并不是无条件的,想要你的Python代码在特定平台中运行还需要进行一些调整,如GUI工具包无法将路径格式调整为数据目录,因此必须在Python中运行最佳实践,使用ospathjoin和几个不同的退出方法等等。 GUI工具包的选择不会从平台上神奇地抽象出来。
PyQt正在努力的消除跨平台差异,允许Python本身需要的常见调整。PyQt可以避免大多数跨平台问题,所以在不同的 *** 作系统中,GUI代码基本都可以保持不变。
在wxPython中,用户可能就需要根据编程内容对不同平台中的GUI代码做一些调整。例如,为了防止Microsoft Windows上的某些元素闪烁,USE_BUFFERED_DC属性必须设置为True才能对图形进行双缓冲。这不是默认的,即使可以无条件地对所有平台进行 *** 作,因此在某些用例中可能存在缺陷。
安装
作为开发人员,您可能不关心获取应用程序所需的库所需的安装步骤; 但是,如果您计划分发应用程序,则需要考虑用户为了使程序运行所必须执行的安装过程。
在所有平台上安装Qt与安装任何其他应用程序一样简单, 给用户一个下载的链接,然后安装下载的软件包即可使用。
PyQt依赖于Qt本身的C ++代码,这意味着用户不仅要安装PyQt,而且还要安装所有的Qt。这个 *** 作没有之前的安装那么简单,但是Qt和PyQt团队已经尽可能简化安装 *** 作了,就现在来看,只要是会安装浏览器或游戏的用户,都可以通过链接成功安装Qt,如果用户十分擅长,用户甚至可以将安装脚本作为自己的安装程序的一部分。
在Linux,BSD和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使用了信号和槽来代替回调函数。当一个特定的事件发生时,信号会被发送出去。Qt的窗体部件(widget)拥有众多预先定义好的信号,当然,我们也可以创建窗体部件(widget)的子类来为它们添加我们需要的自定义信号。槽,则是对一个特定的信号进行的反馈。Qt的窗体部件(widget)同样拥有众多预先定义好的槽,但是通常的做法是,创建窗体部件(widget)的子类并添加自定义槽,以便对感兴趣的信号进行处理。
信号和槽机制是类型安全的(type-safe):一个信号的参数必须和接收槽的参数匹配。由于这种参数匹配机制,编译器以帮助我们检查类型不匹配的签名。信号与槽是松耦合(loosely coupled)的:一个发出信号的类既不知道也不关心哪一个槽接收到这个信号。Qt的信号和槽机制保证了如果你将一个信号连接到一个槽上,槽会在正确的时间以号的参数被调用。信号与槽可以携带任意个、任意类型的参数。他们是完全的类型安全。
所有从QObject或者它的一个子类(比如:QWidget)继承的类都可以使用号与槽。对象中以这种方式通信:一个对象的状态发生了改变并发送信号,关心这个改变的另一对像接收到这个信号。发送信号的对象并不知道也不感兴趣什么对象接收它所发出的信号,这是真正的信息封装,保证了对象能被当作软件组件来使用。
槽能被用来接收信号,除此之外它们也是普通的成员函数。槽不知道是否有信号与它连接起来,正如对象不知道它发出信号是否会被接收一样。这样的机制确保了可以使用Qt创建一个个完全独立的组件。
信号可以与槽进行多对多的连接。就这样,信号与插槽建立了强大的组件编程机制。
布局
编写一个GUI应用程序,首先要做的就是设计布局,以便将所有窗口小部件都合适的布局在应用程序窗口中。和设计网页一样,你可以调整应用程序的大小,甚至可以将其设置为固定大小。
在Qt中,布局是十分顺利的进行,小部件被明确命名(QPushButton,QDial,QCheckbox,QLabel,甚至QCalendarWidget),并且易于调用,甚至连应用文档也很齐全。
这里大多数的困惑都集中在基础级的GUI元素中。 例如,如果您正在编写应用程序,您是否能从QMainWindow或QWidget开始构建您的父窗口
QWidget是一个空的容器,能被所有其他小部件使用,当然也能放置更多的QWidget来形成放置更多小部件的父窗口。QMainWindow使用QWidget,增加了大多数应用程序需要的许多便利功能,如顶部的工具栏,底部的状态栏等。
▲QMainWindow
这是一个使用QMainWindow的小型文本编辑器,只有100多行Python代码:
wxPython中的基础小部件是wxWindow。 wxPython中的所有内容都是基于wxWindow类的,无论是实际的窗口还是按钮,复选框或文本标签。如果类名写错了,wxWindow将直接忽略。
下图是使用wxFrame创建一个空的窗口:
将其他小部件放在wxFrame窗口中,然后构建GUI应用程序。 例如,wxPanel小部件类似于具有绝对大小约束的HTML中的div,因此您可以使用它在主窗口中创建面板。
与PyQt相比,WxPython具有较少的便捷功能。 例如,复制和粘贴功能是建立在PyQt中的,而在wxPython中必须手工编码(并且有部分还受其运行的平台的限制)。
用户界面设计包含为机器和软件创建的所有界面设计,例如网站和移动应用程序的外观,以及它们的方向和易用性。GUI设计在用户与应用程序或网站的交互方式中起着至关重要的作用,这意味着唯一良好的UI设计是实现简化和无缝体验的设计。
用户界面设计要遵循哪些原则?
1、明确。
对任何界面而言,“明确”是首要的也是最重要的一点。设计师们在设计的时候,要去关心人们为何会使用这个应用,去了解什么样的界面是能帮助他们与之互动的,去预测人们在使用时的行为并能够成功地反馈给他们。
2、交互。
界面的存在是为了让人和我们的世界产生互动。它的功用和效果是可以被测量的。但是它们不是功利性的。优秀的界面不但能够让我们做事有效率,还能够激发、唤起和加强我们与这个世界的联系。
3、直观 *** 作。
要抓住直观 *** 作这个最初的目标,界面设计要尽可能的简洁,更多的可识别的惯用自然手势。理想情况下,界面会变得非常细微,用户在会有直观 *** 作的感觉。
4、让用户掌控一切。
人们会在自己能掌控的环境中感觉最舒心、最放松。通过定期的梳理系统状态,描述因果关系,并且在每一步 *** 作都给出提示,让用户感觉每一步 *** 作都在他的掌控中。
5、遵循用户行为。
人总是对符合期望的行为最感舒适。因此,设计出来的元素,看起来应该像它们本身特征一样。在具体 *** 作中,这意味着用户只要看到这个界面元素,就应该能猜测出这个元素是做什么的。
6、前后一致。
为了保持一致性,新手设计师通常在会把相同的视觉处理(重用代码)方式用在,应该用不同的视觉处理方式的元素上。
7、视觉层次。
强烈的视觉层次会让画面有清晰的浏览次序。如果要在画面中添加一个视觉强烈的元素时,设计者应该要重新调整页面上所有元素的重量分配,来达到强烈视觉层次的效果。
了解用户界面设计原则是你做出优秀作品的必要条件,而掌握UI设计师必备的技能才是你决胜高薪的关键。
以上就是关于python gui 哪个简单全部的内容,包括:python gui 哪个简单、python gui是什么意思、python的GUI打不开等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)