python如何进行桌面开发?都有哪些资料可供参考?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python如何进行桌面开发?都有哪些资料可供参考?相关的知识,希望对你有一定的参考价值。

参考技术A 这里介绍3个python桌面开发的包,分别是tkinter,wxpython和pyqt,这3个包都可以快速的开发出桌面应用,下面我简单介绍一下这3个包的安装和使用,实验环境win10+python3.6+pycharm5.0,主要内容如下:

1.tkinter:这个是python自带的开发桌面GUI的标准库,不需要安装,跨平台、可移植性高,支持主流的操作系统,像Windows,Linux,Mac等,python自带的IDLE就是采用这个包开发,简单易学,容易上手,适合小型项目的开发,入门GUI开发的话,可以试一下这个包,官网资料https://docs.python.org/2/library/tkinter.html

程序运行如下:

2.wxpython:这是python一个优秀、成熟的跨平台GUI包,但不是自带的标准库,需要单独安装,支持的组件众多,可以帮助程序员快速的创建功能齐全、界面友好的GUI界面,应用广泛,非常适合中小型项目的开发,官网资料https://docs.wxpython.org/,可以参考学习一下,下面我简单介绍一下安装和使用:

安装,这里直接在cmd窗口输入命令“pip install wxpython”就行,如下:

安装成功后,就可以进行简单的测试了,代码如下,一个简单编辑器:

程序运行截图如下:

3.pyqt:这个是Qt提供给python的一个接口包,Qt功能强大,组件众多,可以快速构建用户GUI界面,所以pyqt的功能也十分强大,借助于Qt,我们可以构建桌面应用,下面我简单介绍一下pyqt的安装和使用,官网资料http://pyqt.sourceforge.net/Docs/PyQt5/:

安装pyqt5,这个直接在cmd窗口输入“pip install pyqt5”就行,如下:

测试代码如下,一个简单的计算器:

程序运行截图如下:

当然,你也可以借助designer.exe直接拖拽控件,完成GUI界面开发,如下,最后打包成py文件就行:

目前,就介绍这3个包吧,网上也有许多这方面的教程,感兴趣的话,可以搜搜,希望以上分享的内容能对你有所帮助吧。

python桌面开发:tkinter基础知识科普,也许你想学习的知识这里都有

好吧,写了这么多关于python桌面开发的博文,今天终于开始回过头来,把tkinter的基础知识进行科普一下了。

一路走来,不容易! 贵在持之以恒

OK,这篇大而全的科普文章,经过整理和参考多方的资料,终于完工了。可喜可贺!在此也感谢前辈的努力和分享!
下面正式进入正题:tkinter基础知识科普,也许你想学习的知识这里都有

一、什么是GUI

GUI,是 Graphics User Interface(图形用户界面)的缩写。在 GUI 中,并不只是输入文本和返回文本,用户可以看到窗口、按钮、文本框等组件,还可以通过鼠标和键盘操作应用。

GUI 是程序交互的一种不同的方式,使用 GUI 开发的程序,和命令行程序一样,都具有输入数据、处理数据和输出数据这3个基本要素,只不过,使用 GUI 开发的程序,它们的输入和输出方式更丰富,更有趣。

二、 PYTHON的GUI库

Python GUI 常用库

库名特点
wxPythonwxPython 是一个跨平台的 GUI 工具集,以流行的 wxWidgets(原名 wxWindows)为基础,提供了良好的跨平台外观。简单来说,wxPython 在 Windows上调用 Windows 的本地组件、在 Mac OS 上调用 Mac OS X 的本地组件、在 Linux 上调用 Linux 的本地组件,这样可以让 GUI 程序在不同的平台上显示平台对应的风格。wxPython 是一个非常流行的跨平台的 GUI 库。其官方网址是http://www.wxpython.org/。
PyQtPyQt 是 Python 编程语言和 Qt 库的成功融合。Qt 本身是一个扩展的 C++ GUI 应用开发框架,Qt 可以在 UNIX、Windows 和 Mac OS X 上完美运行,因此 PyQt 是建立在 Qt 基础上的 Python 包装。所以 PyQt 也能跨平台使用。
PyGTKPyGTK 基于老版本的 GTK+2 的库提供绑定,借助于底层 GTK+2 所提供的各种可视化元素和组件,同样可以开发出在 GNOME 桌面系统上运行的软件,因此它主要适用于 Linux/UNIX 系统。PyGTK 对 GTK+2 的 C 语言进行了简单封装,提供了面向对象的编程接口。其官方网址是http://www.pygtk.org/。
Pywin32Windows Pywin32 库允许我们像 VC 一样的形式使用 Python 开发 win32 应用。
KivyKivy 是一个开源库,它能够让使用相同源代码创建的程序实现跨平台运行。同时,Kivy 主要关注创新型用户界面开发,例如多点触摸应用程序。
FlexxFlexx 是一个纯 Python 工具包,可以用来创建图形化界面程序,还支持使用 Web 技术进行界面的渲染。

三、 什么是tkinter

Tkinter 是 Python 标准 GUI 库,其最初是为 Tcl(这是一门工具命令语言,而不是某个电视机品牌)设计的,由于其良好的可移植性和灵活性,加上非常容易使用,因此逐渐被移植到很多脚本语言中,包括 Perl、Ruby 和 Python。

本章就来重点介绍 Tkinter 库。由于它是 Python 自带的 GUI 库,因此无须进行额外的下载安装,只要导入 tkinter包即可。

(一) 容器+组件的设计思维

任何GUI界面都可被分解成一个空的容器,容器里盛装了大量的基本组件,通过设置这些基本组件的大小、位置等属性,就可以将该空的容器和基本组件组成一个整体的窗口。
实际上,图形界面编程非常简单,它非常类似于小朋友玩的拼图游戏,容器类似于拼图的“母板”,而普通组件(如 Button、Listbox 之类的)则类似于拼图的图块。创建图形用户界面的过程就是完成拼图的过程。

(二) 多重继承的架构模式

由于这些组件之间存在错综复杂的继承关系,因此先通过类图来了解各 GUI 组件,以及它们之间的关系。Tkinter 的GUI 组件之间的继承关系如图所示。
Tkinter的GUI 组件之间的继承关系

1. 根父类Misc和Wm

Tkinter 的 GUI 组件有两个根父类,它们都直接继承了 object 类:
Misc:它是所有组件的根父类。
Wm:它主要提供了一些与窗口管理器通信的功能函数。
对于 Misc 和 Wm 两个基类而言,GUI 编程并不需要直接使用它们,但由于它们是所有 GUI 组件的父类,因此 GUI 组件都可以直接使用它们的方法。

2. 子类 Tk

Misc 和 Wm 派生了一个子类 Tk,它代表应用程序的主窗口。因此所有 Tkinter GUI 编程通常都需要直接或间接使用该窗口类。

3. 组件基类 BaseWidget

BaseWidget 是所有组件的基类,它还派生了一个子类 Widget。Widget 代表一个通用的 GUI 组件,Tkinter 所有的 GUI 组件都是 Widget 的子类。
再来看 Widget 的父类。Widget 一共有四个父类,除 BaseWidget 之外,还有 Pack、Place 和 Grid,这三个父类都是布局管理器,它们负责管理所包含的组件的大小和位置。

4. UI组件

剩下的就是图右边所显示的Widget 的子类了,它们都是Tkinter GUI编程的各种 UI 组件,也就是前面所说的各种“积木块”。表中简单介绍了各 GUI 组件的功能。
在这里插入图片描述

四、 一个入门案例

此处只是简单地介绍了这些 GUI 组件,读者有一个大致印象即可,先不用太熟悉它们。下面通过一个简单的例子来创建一个窗口:

# Python 2.x使用这行
#from Tkinter import *
# Python 3.x使用这行
from tkinter import *
# 创建Tk对象,Tk代表窗口
root =Tk()
# 设置窗口标题
root.title('窗口标题')
# 创建Label对象,第一个参数指定该Label放入root
w =Label(root, text="Hello Tkinter!")
# 调用pack进行布局
w.pack()
# 启动主窗口的消息循环
root.mainloop()

上面程序主要创建了两个对象 Tk 和 Label。其中 Tk 代表顶级窗口,Label 代表一个简单的文本标签,因此需要指定将该 Label 放在root容器内。

五、 配置方法

配置 GUI 组件的方法有以下 3 种:
以关键字参数的方式配置。例如 Button(self, text=“确定”),其中 text = “确定” 就指定了该按钮上的文本是“确定”。

#创建Button 对象,在创建时就配置它的文本和背景色
okButton =Button(self, text ="确定", background ='yellow')

以字典语法进行配置。例如 okButton[‘background’]=‘yellow’,这种语法使得 okButton 看上去就像一个字典,它用于配置 okButton 的 background 属性,从而改变该按钮的背景色。

okButton ['text']= '确定'

以configure方式进行配置:

okButton.configure(text = '确定')

六、 控件的共同属性

在窗体上呈现的可视化控件,通常包括尺寸、颜色、字体、相对位置、浮雕样式、图标样式和悬停光标形状等共同属性。不同的控件由于形状和功能不同,又有其特征属性。在初始化根窗体和根窗体主循环之间,可实例化窗体控件,并设置其属性。父容器可为根窗体或其他容器控件实例。常见的控件共同属性如下表:

在这里插入图片描述

七、 查看帮助文档

help(tkinter.Button.__init__):查看 Button 的构造方法的帮助文档,Button 支持两组选项:标准选项(STANDARD OPTIONS)组件特定选项(WIDGET-SPECIFIC OPTIONS)

  • Grid 支持的选项,可以通过执行 help(tkinter.Label.grid) 命令查看(执行此命令之前,一定要先引入 Tkinter 包)。
  • pack 布局管理器支持的选项,可以通过help(tkinter.Label.pack)命令来查看,有兴趣的读者可自行查看。
  • place() 方法支持的所有选项,可通过执行help(tkinter.Label.place) 命令查看(一定要先导入 Tkinter 包)。
    在这里插入图片描述

八、事件处理

前面介绍了如何放置各种组件,从而得到了丰富多彩的图形界面,但这些界面还不能响应用户的任何操作。比如单击窗口上的按钮,该按钮并不会提供任何响应。这就是因为程序没有为这些组件绑定任何事件处理的缘故。

(一) command方法

简单的事件处理可通过 command 选项来绑定,该选项绑定为一个函数或方法,当用户单击指定按钮时,通过该 command 选项绑定的函数或方法就会被触发。下面程序示范了为按钮的 command 绑定事件处理方法:

(二) bind方法

上面这种简单的事件绑定方式虽然简单,但它存在较大的局限性:

程序无法为具体事件(比如鼠标移动、按键事件)绑定事件处理方法。
程序无法获取事件相关信息。

为了弥补这种不足,Python 提供了更灵活的事件绑定方式,所有 Widget 组件都提供了一个 bind() 方法,该方法可以为“任意” 事件绑定事件处理方法。
下面先看一个为按钮的单击、双击事件绑定事件处理方法的示例:

九、 Variable变量处理

Tkinter 支持将很多 GUI 组件与变量进行双向绑定,执行这种双向绑定后编程非常方便:
• 如果程序改变变量的值,GUI 组件的显示内容或值会随之改变。
• 当 GUI 组件的内容发生改变时(比如用户输入),变量的值也会随之改变。
为了让 Tkinter 组件与变量进行双向绑定,只要为这些组件指定 variable(通常绑定组件的 value)、textvariable(通常绑定组件显示的文本)等属性即可。
但这种双向绑定有一个限制,就是 Tkinter不允许将组件和普通变量进行绑定,只能和 tkinter 包下 Variable 类的子类进行绑定。该类包含如下几个子类:

• ShringVar():用于包装str 值的变量。
• IntVar():用于包装整型值的变量。
• DoubleVar():用于包装浮点值的变量。
• BooleanVar():用于包装bool值的变量。

对于 Variable 变量而言,如果要设置其保存的变量值,则使用它的 set() 方法;如果要得到其保存的变量值,则使用它的 get() 方法。
下面程序示范了将 Entry 组件与 StringVar 进行双向绑定,这样程序既可通过该 StringVar 改变 Entry 输入框显示的内容,也可通过该 StringVar 获取 Entry 输入框中的内容。

先写到这里,后续将持续更新。
欢迎持续关注,感谢支持!

以上是关于python如何进行桌面开发?都有哪些资料可供参考?的主要内容,如果未能解决你的问题,请参考以下文章

python软件开发的案例都有哪些,可用于哪些开发

java 做桌面程序 都有哪些好的框架 是否都是封装java swing 的??

python桌面开发:tkinter基础知识科普,也许你想学习的知识这里都有

中高级 C# 开发人员在开始使用 Visual Studio 2010 C++ 时都有哪些好的参考资料?

天津python培训,python的主要应用领域都有哪些?

请问oracle中scott用户都有哪些可供练习的表?怎么查询呢