1.前言
最近用Python给老妈写了一个处理excel表格的小软件,因为自己平时用Python一般都是用在数值计算领域,所以一般使用命令行的方式交互即可。但是给老妈用发现用命令行交互方式使用并不是很方便,于是寻思能不能做个GUI的界面,这样只需通过鼠标即可完成所有操作。
搜索了一下发现用Python开发GUI界面可以用到的库有Tk、PyQt及wxPython等,其中PyQt可以直接使用Qt Designer生成界面,比较便利。于是决定选用PyQt开发界面。目前PyQt有PyQt4和PyQt5两个版本,分别对应Qt4和Qt5。因为自己平时写代码多用Python2.7,而PyQt5目前只有支援Python3.4的版本,所以最终选择了PyQt4完成任务。
为了巩固所学到的知识,决定用PyQt4写一个音乐播放器并将步骤详细的记录下来。
2.开发环境的搭建
假设已经安装好了Python2.7,可以从PyQt的官网下载所需的源码以及相应的设计工具。我下载的是PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x32.exe。安装完成后可以运行以下代码。
from PyQt4.QtGui import *
import sys
app = QApplication(sys.argv)
button = QPushButton("Hello World!")
button.show()
app.exec_()
即可得到一个最简单的窗口应用。运行结果如下,包含一个名叫Hello World!的按钮。
3.将PyQt与Pycharm相结合
Pycharm是一款优秀的python IDE工具,具有很完善的代码提示等功能,可以在这里下载免费的Community版。完成安装后打开软件, 选择File –> Settings –> Tools –> External Tools –> 单击“ADD”(加号图标) –> 弹出对话框,做如下设置:
1. 添加Qt designer工具,Work directory 使用变量
$ ProjectFileDir $
2. 添加PyUIC,用于将Qt designer生成的UI文件转换成python代码,其中parameters填入的是C:\Python27\Lib\site-packages\PyQT4\uic\pyuic.py $FileName$ -o $FileNameWithoutExtension$.py
注意前半部分替换成自己的python路径。
4.利用Qt designer设计界面
在本文的最后,我们将利用Qt designer设计一个简单的界面并将其整合到我们自己的代码中去。
如果你已经按照上文安装了pycharm并完成了配置,新建工程后选择Tools –> External Tools –> PyQt4即可打开Qt designer。我们新建一个diolog without buttons,在界面上放置一个名叫退出的按钮,如下图:
然后切换到信号与槽编辑界面,左击鼠标从按钮拖动至空白界面处,添加一个信号/槽如图,其中左边的clicked()代表按下button这一信号,右边的close()代表接收到clicked信号后做出的反应,即退出程序。关于信号与槽更详细的介绍请查阅官方文档。
点击确定后保存文件,命名为demo1。至此我们完成了界面部分的设计,接下去我们将.ui文件利用pyuic转换成python代码并在程序中调用。在pycharm中右击demo1.ui,选择External tools中的pyuic,即可看到当前目录下生成了demo1.py的文件。此时我们刚才设计的界面已经转换成了python代码。
新建一个python文件,输入以下代码:
import sys
from PyQt4.QtGui import *
import demo1
class Demo(QDialog, demo1.Ui_Dialog):
def __init__(self, parent=None):
super(Demo, self).__init__(parent)
self.setupUi(self)
app = QApplication(sys.argv)
dialog = Demo()
dialog.show()
app.exec_()
运行后,点击退出按钮,即可退出运行。
5.小结
作为本系列的第一篇文章,简要介绍了一下python下可选用的gui库及pyqt+pycharm编程环境的搭建。然后介绍了如何利用qt designer简化界面的设计流程。从下一篇文章开始我们将正式开始制作我们的音乐播放器。
最后给我的博客柚子酱的博客https://yzjam.com 打一个小广告,这个博客是我基于Django&Bootstrap制作的,欢迎大家的到访。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)