中企动力 > 头条 > python做一个gui

网站性能检测评分

注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。

python做一个gui

「技术文章」《Python 数据库 GUI CGI编程》 行业视频课程

img

依瑶

关注

1.写在前边

上一次,我们介绍了Python的入门的文章,今天我们就来介绍下Python的数据库,GUI, CGI的编程,以及Python 2.x 与Python 3.x的区别。

2.连接数据库

Python 标准数据库接口为 Python DB-API,MySQLdb 是用于Python链接Mysql数据库的接口。使用的时候,必须安装MySQLdb 模块,否则会报出来模块找不到。

2.1 Linux下安装MySQLdb模块

使用包安装可以 wget http://sourceforge/projects/mysql-python/files/latest/download

$ tar xfz MySQL-python-1.2.3.tar.gz$ cd MySQL-python-1.2.3$whereis mysql_config mysql_config: /usr/bin/mysql_config$ vim site.cfg 修改mysql_config为mysql配置文件的路径 /usr/bin/mysql_config 还要修改 threadsafe = False$ python setup.py build$ sudo python setup.py install

2.2 mac下安装MySQLdb模块

使用easy_install pip命令安装pip

$ easy_install pip

mac安装pip

$ pip install MySQL-Python

2.3 查询数据库

代码在GitHub上的源码地址:http://t/RQjcvfl

数据库的输出效果

3. GUI编程

Python 提供了多个图形开发界面的库,其中Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。

代码在GitHub上的源码地址:http://t/RQjcvfl

Python的GUI编程

mac系统下GUI的效果

4. CGI编程

1)Python的CGIHTTPServer一般是与python一起安装的,使用如下命令既可以启动,为了便于组织目录,建议先建立一个目录,比如web,然后再运行下面的命令。

nohup python -m CGIHTTPServer 8088 &

原理图

2)静态文件代码地址:http://t/R8wMYHr

前端html代码

访问地址:http://localhost:8088/

前端图

3)提交给后端的地址是 http://localhost:8088/cgi-bin/c_area.sh

后端shell代码

后端的shell脚本地址:http://t/R8wMmMn

提交后计算结果

5. Python 2.x 与 Python 3.x区别

5.1 两者不兼容

Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。

为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。

许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。

为了照顾现有程序,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。

5.2 一图胜千言

Python2与Python3区别

可以升级的自己的python版本,建议直接采用Python3,毕竟是趋势。使用 “2to3工具”也是不错的选择。

6. 写在最后

本文简单接受了Python的数据库链接,GUI, CUI的简单编程,最后简单介绍了Python2 与Python3的区别,欢迎大家交流。

有前途的Python

隐藏的宝藏!Python开发者必知的13个Python GUI库 行业视频课程

img

唐乔羽吉

关注

Python GUI编程(Tkinter)

Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下:

Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。Jython:Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码。

Python是一种高级编程语言,它用于通用编程,由Guido van Rossum 在1991年首次发布。Python 的设计着重于代码的可读性。

Python有一个非常大的标准库,并且有一个动态类型系统,它还具有自动内存管理功能,支持多种编程范例。这些包括:

● 面向对象

● 命令式

● 函数式

● 程序式

图形用户界面(GUI)

GUI是一个人机交互的界面。换句话说,它是人类与计算机交互的一种方法。它使用窗口,图标和菜单,也可以通过鼠标和键盘进行操作。

GUI库

GUI库是在编写软件时,需要图形用户界面(GUI)所需要的库。在构建程序的GUI时,通常使用层叠方式,图形控制元素直接叠加在一起。

Python GUI

当你使用python编写应用程序时,你就一定要使用GUI。Python GUI的选择有很多。目前来说,Python GUI程序库有30多个跨平台框架。现在就列出其我认为最好的13个:

1. Tkinter

是一个轻量级的跨平台图形用户界面(GUI)开发工具,是Tk图形用户界面工具包标准的Python接口,目前可以运行于绝大多数的Unix平台、Windows和Macintosh系统(Tkinter教程页面: http://python-textbok.readthedocs.io/en/1.0/Introduction_to_GUI_Programming.html )

2. Flexx

许多Python GUI库基于以其他语言编写的库,例如用C++编写的库有wxWidgets和libavg。但Flexx是用Python创建的,使用Web技术,也正因为如此 Flexx 是跨平台的。只需要有 Python 和浏览器就可以运行。(教程地址: http://flexx.readthedocs.io/en/latest/ )

3. CEF Python

该框架基于Google Chromium,面向Windows,MAC OS和Linux,其主要用于在第三方应用程序中嵌入式浏览器的使用上。(项目地址:https://github/cztomczak/cefpython)

4. Dabo

Dabo是一个跨平台的应用程序开发框架,基于wxpython的再封装库。它提供数据库访问,商业逻辑以及用户界面。(项目地址: https://dabodev/ )

5. Kivy

Kivy基于OpenGL ES 2,能够让使用相同源代码创建的程序能跨平台运行。这个框架是事件驱动的,基于主循环,非常适合开发游戏。(项目地址: https://kivy.org/#home )

6. Pyforms

Pyforms是一个用于开发GUI应用程序的Python 2.7 / 3.x跨环境运行框架。(项目地址: https://pyforms.readthedocs.io/en/v3.0/ )

7. PyGObject

通过PyGObject,你可以为GNOME项目编写Python应用程序,你也可以使用GTK +编写Python应用程序。(项目地址:http://pygobject.readthedocs.io/en/latest/getting_started.html)

8. PyQt

Qt是一个跨平台的框架。它是用C ++编写的。这是一个非常全面的库。它包含许多工具和API。它被广泛应用于许多行业。它涵盖了很多平台。PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。(项目地址:https://riverbankcomputing/software/pyqt/download5)

9. PySide

Qt(cute)是使用“C++”语言编写的应用程序/用户界面(UI)框架。“PySide”是“Qt”的封装。与PySide的不同之处在于PyQt可以商用。(项目地址:https://wiki.qt.io/Category:LanguageBindings::PySide::Downloads)

10. PyGUI

PyGUI的一个主要目的就是尽量减少Python应用与平台底层GUI之间的代码量,面向Unix,Macintosh和Windows平台(项目地址:http://cosc.canterbury.ac.nz/greg.ewing/python_gui/)

11. libavg

这是一个第三方库,用C ++编写的。它具有以下特性:

● 以Python变量的形式显示元素

● 事件处理系统

● 计时器

● 日志支持(项目地址:https://libavg.de/site/)

12. PyGTK

在Linux中常用的“GTK+”是“PyGTK”的“GTK +”封装。与Kivy和PyQt相比,它能不加修改地,稳定运行各种操作系统之上,如Linux,Windows,MacOS等(项目地址:https://github/GNOME/pygtk)

13. wxPython

wxPython 是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。 (项目地址: https://wxpython.org/ )

总结

上面介绍的这些GUI框架,涵盖了大部分开发人员的需要。你可以根据你自己的需求,选择适合你的GUI库。

Python GUI:PyQt界面与业务逻辑分离 推广视频课程

img

凝安

关注

在上一篇文章《Python GUI:PyQt安装及使用1》中,我们通过pyuic5命令将Qt designer软件画好的UI文件test.ui转换为了python源码ui_test.py,在该文件中定义了类Ui_MainWindow,它是object类型的子类,包含两个函数:setupUi和retranslateUi,前者调用了后者,setupUi函数完成了窗口的初始化。

现在运行ui_test.py文件是看不到任何东西的,为了观看UI,需要在后面添加几行窗体运行代码,如下图:

这几行代码是套路,也很简单,就不解释了。运行之后可看到UI窗口。这是最初的窗体,我们没有添加任何的业务逻辑代码,试想一下,业务逻辑代码应该放在哪呢?

显然应该放在类Ui_MainWindow中,这样就会带来一个问题,即:如果在designer软件中修改了界面,则test.ui文件和ui_test.py文件将相继发生改变,此时,需要重新编辑ui_test.py文件,添加窗体运行代码和业务逻辑代码,如此反复修改,操作太过繁琐。解决办法是利用继承实现界面和业务逻辑的分离。新建类MainForm,该类继承自QMainWindow,具体实现如下:

这个时候,业务逻辑代码应该放在MainForm类中,该类在初始化函数中通过定义self.ui变量并调用setupUi函数来完成窗体界面的初始化工作,实际上这已经将界面与业务逻辑分离开了,因为界面的初始化代码ui_test是作为模块导入到mainform中的。如果界面发生改动,只需要通过pyuic5命令重新生成ui_test.py文件,mainform.py文件不需要做改动。

举个例子,现在要在关闭窗口前进行用户确认,我们在类MainForm中重写虚函数closeEvent函数:

点击“关闭”按钮或者右上角×,均会弹出消息对话框,运行结果:

此时,无论怎么修改ui,这个退出前确认的简单逻辑依然有效。

八款常用的 Python GUI 开发框架推荐 推广视频课程

img

断秋

关注

作为Python开发者,你迟早都会用到图形用户界面来开发应用。本文将推荐一些 Python GUI 框架,希望对你有所帮助,如果你有其他更好的选择,欢迎在评论区留言。

Python 的 UI 开发工具包 Kivy

https://oschina/p/kivy

Kivy是一个开源工具包能够让使用相同源代码创建的程序能跨平台运行。它主要关注创新型用户界面开发,如:多点触摸应用程序。Kivy还提供一个多点触摸鼠标模拟器。当前支持的平台包括:Linux、Windows、Mac OS X和Android。

Kivy拥有能够处理动画、缓存、手势、绘图等功能。它还内置许多用户界面控件如:按纽、摄影机、表格、Slider和树形控件等。

Python 的 GUI 开发工具 Flexx

https://oschina/p/flexx

Flexx 是一个纯 Python 工具包,用来创建图形化界面应用程序。其使用 Web 技术进行界面的渲染。你可以用 Flexx 来创建桌面应用,同时也可以导出一个应用到独立的 HTML 文档。因为使用纯 Python 开发,所以 Flexx 是跨平台的。只需要有 Python 和浏览器就可以运行。如果是使用桌面模式运行,推荐使用 Firefox 。

Qt 库的 Python 绑定 PyQt

https://oschina/p/pyqt

PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP和PyQt没有分开。PyQt是用SIP写的。PyQt 提供 GPL版和商业版。

Python图形开发包 wxPython

https://oschina/p/wxpython

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

就如同Python和wxWidgets一样,wxPython也是一款开源软件,并且具有非常优秀的跨平台能力,能够运行在32位windows、绝大多数的Unix或类Unix系统、Macintosh OS X上。

Tk 图形用户界面 Tkinter

https://oschina/p/tkinter

Tkinter(也叫Tk接口)是Tk图形用户界面工具包标准的Python接口。Tk是一个轻量级的跨平台图形用户界面(GUI)开发工具。Tk和Tkinter可以运行在大多数的Unix平台、Windows、和Macintosh系统。

Tkinter 由一定数量的模块组成。Tkinter位于一个名为_tkinter(较早的版本名为tkinter)的二进制模块中 。Tkinter包含了对Tk的低 级接口模块,低级接口并不会被应用级程序员直接使用,通常是一个共享库(或DLL),但是在一些情况下它也被Python解释器静态链接。

Pywin32

https://oschina/p/pywin32

Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用。代码风格可以类似win32 sdk,也可以类似MFC,由你选择。如果你仍不放弃vc一样的代码过程在python下,那么这就是一个不错的选择。

Python 图形界面开发包 PyGTK

https://oschina/p/pygtk

PyGTK让你用Python轻松创建具有图形用户界面的程序.底层的GTK+提供了各式的可视元素和功能,如果需要,你能开发在GNOME桌面系统运行的功能完整的软件.

PyGTK真正具有跨平台性,它能不加修改地,稳定运行各种操作系统之上,如Linux,Windows,MacOS等.除了简单易用和快速的原型开发能力外,PyGTK还有一流的处理本地化语言的独特功能.

用python快速开发绚丽桌面程序 pyui4win

https://oschina/p/py-ui4win

pyui4win是一个开源的采用自绘技术的界面库。支持C++和python。用它可以很容易实现QQ和360安全卫士这样的绚丽界面。而且,pyui4win有所见即所得界面设计器,让C++开发人员和python开发人员直接用

设计工具设计界面,而不用关心界面如何生成和运行,可以显著缩短界面开发时间。在pyui4win中,界面甚至可以完全交给美工去处理,开发人员可以只负责处理业务逻辑,把开发人员彻底从繁杂的界面处理中解放出来。

文章来源:开源中国

文章编辑:灯塔大数据

利用pyqt来编写属于自己的python Gui界面 行业视频课程

img

Shou

关注

本人是做接口测试的,而很多接口现在对于安全方面有了很大的重视,所以往往在接口层上做了一些加密,比如MD5、AES、SHA之类的加密,而每次加密,都是自己利用python编写脚本而生成sign值,这往往对于自己在工具效率上无法提高,所以就产生了自己编写一个简单的加密+请求接口的小工具的想法。

因为本人现在主要是以python为主,所以在选择的时候,就从这方面入手。许多人在学习如何创建一个 GUI 应用的时候都感到十分的困难。其中最重要的原因是,他们不知道应该从何下手。大多数的教程都只有文字,但事实上仅仅依靠文字很难学会 GUI 编程,因为 GUI 应用大多数都是基于视觉上的。

本篇文章,主要是分享下自己在编写这个小工具过程中的心得。做出来的效果如下:

工具效果图

做出来的虽然有点简陋,但是可以做为借鉴、完善,接下来就是工具制作的方法:

1、Gui界面的制作

首先要先安装python环境,然后再eric6,涉及到这些环境的安装可以自行百度去寻找方法,在此不会涉及到环境安装的方法,环境安装完成后,打开QT Designer(在eric6根目录下点击eric6.pyc或者在python根目录下点击打开eric.bat):

QT Designer

打开QT Designer后,选择Main Window,点击创建:

创建Main Window

创建好你的MainWindow后:

MainWindow

在MainWindow界面的右边QObject,那就是定义这个对象的名字的地方。这个名字将是我们通过 Python 代码调用到这个对象的变量名,所以请尽量取一个有意义的名称。

设计完成你的界面后,点击保存,将会生成得到xxx.ui文件,这个文件可以通过cmd打开ui文件所在的路径,然后通过pyuic4 xx.ui > xx.py 可以得到xx.py文件:

生成的py文件

2、编写代码

Qt 代码是面向对象的,并且简单易学。所有我们添加的组件都是一个对象,并且都拥有自己的方法比如toPlainText()(用来读取输入框中的值)。这让它使用起来非常方便。

在你编写代码之前,你必须要使用一些函数来进行配置。可以通过官方的例程(以及网上的一些教程)中总结出了这一小段代码来进行配置。

这些代码非常有用,每当你想要创建一个新的 PyQt 项目的时候,就在这段代码的基础上添加你自己的代码吧。

这段代码如下:

import sysfrom PyQt4 import QtCore, QtGui, uicqtCreatorFile = "" # Enter file here.Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)class MyApp(QtGui.QMainWindow, Ui_MainWindow):def __init__(self):QtGui.QMainWindow.__init__(self)Ui_MainWindow.__init__(self)self.setupUi(self)if __name__ == "__main__":app = QtGui.QApplication(sys.argv)window = MyApp()window.show()sys.exit(app.exec_())

其中需要注意的是:

qtCreatorFile = "" # Enter file here.

你需要在这里填入你先前创建的文件的地址,即就是之前生成的ui文件。这个文件将会被内置的函数载入:

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)

再看下这段代码:

if __name__ == "__main__":app = QtGui.QApplication(sys.argv)window = MyApp()window.show()sys.exit(app.exec_())

这段主程序创建了一个新的 Qt Gui 应用。,每个 QT 应用都可以通过命令行进行配置,所以必须传入sys.argv 参数。不过现在我们用不到这个。最后,我们创建了一个MyApp类,这个类继承于 Qt 库并且调用了父类的初始化函数:

class MyApp(QtGui.QMainWindow, Ui_MainWindow):def __init__(self):QtGui.QMainWindow.__init__(self)Ui_MainWindow.__init__(self)self.setupUi(self)

你不一定非得要了解这些代码的细节。你只需要在它的基础上继续开发就好了。

但是最好不需要这样导入ui文件为前提下进行开发,而是直接生成py文件基础上进行开发,因为你后续还需要生成exe文件,至于怎样实现你的功能,这部分代码可以看看自己的需求了,怎么写就怎么写了:

#此部分为生成的py文件代码self.label_21.setText(_translate("MainWindow", "sign:", None))self.label_22.setText(_translate("MainWindow", "bizContent:", None))self.request_button_form.setText(_translate("MainWindow", "Request", None))self.timestamp_select_3.setText(_translate("MainWindow", "11位时间戳", None))self.timestamp_select_4.setText(_translate("MainWindow", "年-月-日 时:分:秒", None))self.label_23.setText(_translate("MainWindow", "appSecret:", None))self.appSecret_input_form.setHtml(_translate("MainWindow", "