鱼C论坛

 找回密码
 立即注册
查看: 4018|回复: 4

[技术交流] PyQT5急速入门1

[复制链接]
发表于 2016-4-18 01:58:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本篇译文由 hldh214 童鞋翻译,原文链接

引言

这是一篇启蒙级的PyQt5教程,其目的是让你在很短的时间内入门PyQt.需要具备一些Python的基本知识.

PyQt是跨平台GUI工具包Qt的Python版本.是Python的GUI编程众多选择之一.其余的选择有PySide, PyGTK, wxPython, 和 Tkinter.

PyQt是开发非营利性(GPL协议)程序的利器.而如果你需要开发营利性程序,PySide很适合你,并且它是遵循LGPL协议的


安装 PyQt

你需要Python的最新版本(现在是 3.3.3 注1).确认安装完毕且添加了环境变量,添加环境变量在安装Python的时候可以选择添加.

以上完成以后,去Riverbank官网下载合适版本的可执行文件,安装的时候选择默认安装.


编写你的第一段代码
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class Form(QWidget):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        nameLabel = QLabel("Name:")
        self.nameLine = QLineEdit()
        self.submitButton = QPushButton("&Submit")

        buttonLayout1 = QVBoxLayout()
        buttonLayout1.addWidget(nameLabel)
        buttonLayout1.addWidget(self.nameLine)
        buttonLayout1.addWidget(self.submitButton)

        self.submitButton.clicked.connect(self.submitContact)

        mainLayout = QGridLayout()
        # mainLayout.addWidget(nameLabel, 0, 0)
        mainLayout.addLayout(buttonLayout1, 0, 1)

        self.setLayout(mainLayout)
        self.setWindowTitle("Hello Qt")

    def submitContact(self):
        name = self.nameLine.text()

        if name == "":
            QMessageBox.information(self, "Empty Field",
                                    "Please enter a name and address.")
            return
        else:
            QMessageBox.information(self, "Success!",
                                    "Hello %s!" % name)

if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)

    screen = Form()
    screen.show()

    sys.exit(app.exec_())

代码分析

1-2行: import必要的模块

第4行: QWidget是PyQt5里面关于用户界面的基类,所以你通过继承QWidget这个基类来创建一个新Form类.

5-6行: QWidget的构造函数.构造函数无父类,这将被定义为一个窗口.

7-9行: 添加一个标签,一个文本编辑框和一个提交按钮.

12-15行: 添加一个QVBoxLayout.QVBoxLayout类可以使widgets竖直显示.

第17行: 为提交按钮添加一个事件,事件为函数submitContact().

19-21行: 添加一个QGridLayout.

23-24行: 在设置完窗口标题之后设置QGridLayout为主窗口默认布局.

第27行: 使用nameLine变量表示文本输入框内容.

29-35行: 当nameLine无内容时通过弹窗提示,当其有内容时则弹窗输出内容文本.

至于剩下的代码就容易理解了.我们实例化一个Form对象叫做screen。使用show()方法在屏幕上显示窗口.

然后我们开始程序主循环.这个循环会等待事件来处理,直到程序调用exit()方法或主窗口被销毁。sys.exit()

注2方法可以完成一个完美的退出,释放内存资源。

执行这个脚本只需要输入:
python name of script

总结

这是一篇入门级的教程.想要看看综合参考请[点我]

----------

# 注解 #

注1. 原文发表于January 23, 2014

注2. 有关app.exec_()的下划线问题


请接着学习 -> PyQT5急速入门2

评分

参与人数 2荣誉 +15 鱼币 +15 贡献 +12 收起 理由
杰里·桑德斯 + 5 + 5 + 2 感谢小甲鱼的无私奉献!
冬雪雪冬 + 10 + 10 + 10 热爱鱼C^_^

查看全部评分

本帖被以下淘专辑推荐:

  • · 游戏|主题: 3, 订阅: 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-18 10:45:14 | 显示全部楼层
@小甲鱼 开个qt的视频课程吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-18 12:02:03 | 显示全部楼层
冬雪雪冬 发表于 2016-4-18 10:45
@小甲鱼 开个qt的视频课程吧

同求!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-21 22:16:38 | 显示全部楼层
冬雪雪冬 发表于 2016-4-18 10:45
@小甲鱼 开个qt的视频课程吧

可以啊,到时候加载《极客首选之Python》中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-10 11:39:57 | 显示全部楼层
11111111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 05:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表