简评:PySide2 是 QT 官方出品,值得期待

PySide2 第一个技术预览版快要发布了,在此给出一个简单的例子,来展示它将如何打开 Python世界的大门。

下面我们将使用 QWidgets 构建一个简单的应用来展示 PySide2 的简洁性,每个脚本都具有或多或少相同的结构:

创建一个 QApplication

然后包含所有想要使用的 QWidgets 和结构(例如 QLabel

显示应用程序并启动 QApplication

放在一起,将会是这样的东西:

# hello_world.py
from PySide2.QtWidgets import QApplication, QLabel app = QApplication([])
label = QLabel("Hello Qt for Python!")
label.show()
app.exec_()

使用 python hello_world.py 命令就可以执行这段脚本。但这不是全部,真正的问题是:如何访问 Qt 类的方法?为了简化这个过程,我们保留了 Qt API,例如,如果我们想要指定一个 QLabel 的大小,在 C++ 中我们会这样写:

QLabel *label = new QLabel();
label->setText("Hello World!");
label->resize(800, 600);

使用 PySide2 的写法是:

label = QLabel()
label.setText("Hello World!")
label.resize(800, 600)

现在我们知道了 C++ 的等价写法,就可以编写更复杂的应用程序。

import sys
import random
from PySide2.QtCore import Qt
from PySide2.QtWidgets import (QApplication, QWidget,
QPushButton, QLabel, QVBoxLayout) class MyWidget(QWidget):
def __init__(self):
QWidget.__init__(self) self.hello = ["Hallo welt!", "Ciao mondo!",
"Hei maailma!", "Hola mundo!", "Hei verden!"] self.button = QPushButton("Click me!")
self.text = QLabel("Hello World")
self.text.setAlignment(Qt.AlignCenter) self.layout = QVBoxLayout()
self.layout.addWidget(self.text)
self.layout.addWidget(self.button)
self.setLayout(self.layout) self.button.clicked.connect(self.magic) def magic(self):
self.text.setText(random.choice(self.hello)) if __name__ == "__main__":
app = QApplication(sys.argv)
widget = MyWidget()
widget.resize(800, 600)
widget.show()
sys.exit(app.exec_())

如果你还不熟悉 Qt 开发,那么扩展某个类并将其改写以适应我们的需求是一种常见做法,在上面的例子中,我们使用 QWidget 作为基类,并包含了一个 QLabelQPushButton

该应用非常简单:

  1. 首先,我们编写包含许多种语言的 Hello World 的写法的列表。
  2. 然后,我们用一定的对齐,字体和大小初始化一个 QPushButton 和一个 QLabel
  3. 之后,我们创建一个 QVBoxLayout 来包含我们的对象,并将其分配给我们的类。
  4. 最后,我们将 QPushButton 的 clicked() 信号连接到我们称为 magic 的方法。
  5. 因此,每次点击按钮,我们都会以随机语言获得 Hello World

这个简单的脚本的结构将成为大多数使用 Pyside2 的应用程序的基础。

原文:Hello Qt for Python

Hello QT(译)的更多相关文章

  1. Qt浅译:JSON Support in Qt(JSON只有六种数据类型)

    JSON Support in Qt   Qt5之后开始提供对处理JSON数据的支持,JSON是一种Interter数据交换的数据格式.   JSON 用于存储结构化的数据,JSON有6种基本数据类型 ...

  2. Qt——容器类(译)

    注:本文是我对Qt官方文档的翻译,错误之处还请指正. 原文链接:Container Classes 介绍 Qt库提供了一套通用的基于模板的容器类,可以用这些类存储指定类型的项.比如,你需要一个大小可变 ...

  3. qt 4.6.2 与visual studio 2005 集成(编译方法,以及中间遇到的问题)

    不知不觉在蒂森差不多半个月了,哈哈,时间过得很快,过得很充实,近来研究QT,首先嘛,肯定要学会安装了,这最基础的不会更不用说下面的啦.闲话少说,进正题,基本的安装步骤网上多的是,但参考一个大多数情况是 ...

  4. QT静态编译

    Qt静态编译(链接)和动态编译区别 Qt的静态编译译(其实应该叫链接,不是编译),将各模块编译成静态库,这样在编译自己写的Qt程序时,会将这些静态库编译(链接)到你的EXE文件中去的.Qt的动态编译, ...

  5. 用QT 还是MFC ? (转)

    我曾经使用过QT和MFC来开发过软件,我想和大家分享我使用他们时所体会的不同之处. 我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰.但是,我在这里是用我自己的语言来表达我自 ...

  6. MFC和Qt优缺点

    在网上看到的,拿来和大家一起讨论下. 我曾经使用过来开发过软件,我想和大家分享我使用他们时所体会的不同之处. 我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰.但是,我在这里 ...

  7. 迁移到MSYS2 与 Qt 工具链注意的几个事情(注意链接顺序,并且人造mingw工具链所没有的局部midl.exe命令)

    Microsoft Visual Studio 2015社区版提供了强大的开发体验,且 Qt 提供了预编译版本.然而,由于客户提出兼容Windows XP ~ Windows 8.1 这样宽泛的环境要 ...

  8. Qt入门之基础篇(1):Qt4及Qt5的下载与安装

    转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...

  9. 收藏的博客 -- Qt/C++学习

    Qt Creator环境: 使用Qt Creator作为Linux IDE,代替Vim:实现两台Linux电脑远程部署和调试(一台电脑有桌面系统,一台电脑无桌面系统) 使用Qt Creator作为Li ...

随机推荐

  1. Composer切换到Laravel-China 镜像

    全局 composer config -g repo.packagist composer https://packagist.laravel-china.org 该项目 composer confi ...

  2. Maven面试宝典啊

    一.Maven有哪些优点和缺点 优点如下: 简化了项目构建.依赖管理: 易于上手,对于新手可能一个"mvn clean package"命令就可能满足他的工作 便于与持续集成工具( ...

  3. 一张图记住TCP/IP通讯中的IP地址配置

    TCP/IP通讯情景: 用网线将计算机A(服务器Server)和计算机B(Client)连接起来.程序代码在计算机A中,计算机B中安装有TCP/IP通讯助手. (图中屏幕大的是计算机A,屏幕小的笔记本 ...

  4. Linux下查看Nginx的并发连接数和连接状态-乾颐堂

    Linux下查看Nginx等的并发连接数和连接状态. 1.查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态: netstat -n | awk '/^tcp/ {++S[$N ...

  5. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  6. LWIP内存管理

    LWIP是一种TCP/IP协议栈,与嵌入式操作系统一样也提供了内存管理. 内存池里面有多个同样大小的内存,不同类型的内存池其里面的内存大小不一样.

  7. 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default

    部署MVC的时候,因为服务器.NET版本是4.5.1,所以在vs将.NET版本降到4.5.1的时候发布报错. 原因:C#6降到C#5导致 解决办法:修改web.config配置 ,编译选项改为comp ...

  8. [GO]使用select实现超时

    package main import ( "fmt" "time" ) func main() { ch := make(chan int) quit := ...

  9. YII2 rules 规则验证器

    [['code','name'],'trim'], ['code','string','max'=>4], [['code','name','status'], 'required'], ['e ...

  10. MATLAB搬移到别的电脑出现License Manager Error -9

    是注册码的问题,不需要重装,主要是以前的安装包不见了.解决办法: 下一个KeyGen的MLMCrypt.exe文件.运行之后在当前目录下出现一个LICENSE.DAT文件. 复制到matlab.exe ...