Qt for python Tutorials【1】

文章说明

这一部分的文章主要是对QT for python tutorials 这个官方教程的翻译,另外标题不作翻译,方便查找原文。用于学习和记录,方便自己查阅。之前提到在ROS环境下搭建qml写的界面,需要用到这部分知识,所以扒了下官方教程。

Qt for python 项目相关

原文介绍见https://wiki.qt.io/Qt_for_Python

这个项目旨在向Qt提供一个完整的Pyside模块接口。

下图是python和Qt兼容性情况

在这里插入图片描述

Your First QtWidgets Application

官方教程链接 https://doc.qt.io/qtforpython-6/tutorials/basictutorial/widgets.html

在其他的编程框架中,你都是从传统的“hello world”程序开始接触。这儿有一个简单的样例,用Pyside6写的hello world 窗口应用。

import sys
from PySide6.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
label = QLabel("Hello World!")
label.show()
app.exec()

当你执行这段代码,窗口看起来将如下:

在这里插入图片描述

对于使用Pyside6实现的一个窗口控件应用而言,你必须总是从PySide6.QtWidgets模块中导入与此控件相近的类。
在导入之后,你需要创建一个QApplication实例。因为Qt可以从命令行接收参数,所以你可以传递一些参数给QApplication对象。大多时候,你可能并不需要传递任何参数,所以你可以让它保持原样(不含参数),也可以使用如下方法:

app = QApplication([])

创建完应用对象之后,还需要创建一个QLabel对象。一个QLabel是一个表现了文本(普通文本或富文本,如html)或者图像的控件:

# This HTML approach will be valid too!
label = QLabel("<font color=red size=40>Hello World!</font>")

注意:创建完标签之后,我们还需要调用它的show()方法来使其显示。

最后,我们调用***app.exe()***来进入Qt主循环,并开始执行Qt代码。

Using a Simple Button

官方教程链接 https://doc.qt.io/qtforpython-6/tutorials/basictutorial/clickablebutton.html

在这个教程,我们将展示如何用Qt for python这个项目处理signals and slotssignals 和slots是Qt的一个特征,它能让你的图形控件和其他的图形控件或者python代码进行交互。接下来这个例子中,我们的应用会创建一个按钮,你每次点击,都会发记录一个消息(Button clicked,Hello)到python控制台。
首先从导入必要的Pyside6类和python sys 模块开始。

import sys
from PySide6.QtWidgets import QApplication, QPushButton
from PySide6.QtCore import Slot

首先创建一个函数记录消息到控制台

# Greetings
@Slot()
def say_hello():
    print("Button clicked, Hello!")

注意:@Slot()是一个装饰器,用来标识函数为一个slot(槽),不理解为什么以这种方式实现暂时不重要,但是使用这种方法,可以避免一些不希望发生的行为发生。

现在如之前提到的一样,你需要先创建一个QApplication 对象来运行你的Pyside6代码:

# Create the Qt Application
app = QApplication(sys.argv)

接下来创建一个可点击的按钮,它是一个QPushButton实例。给这个按钮打标签,我们需要传递一个python字符串在创建这个实例时。

# Create a button
button = QPushButton("Click me")

在我们显示这个按钮之前,我们需要连接它和记录消息到控制台的函数say_hello()。有两种方法可以实现:使用老的方法和使用新方法。这里示例用新方法,更python化。QPushButton类有一个预定义的信号,叫做clicked,每次该按钮被点击时,该信号都会触发。我们将把这个信号和say_hello函数关联起来:

# Connect the button to the function
button.clicked.connect(say_hello)

最后我们显示这个按钮,并进入Qt主循环:

 # Show the button
button.show()
# Run the main Qt loop
app.exec()

以下是这个例子的完整代码

#!/usr/bin/python

import sys
from PySide6.QtWidgets import QApplication, QPushButton
from PySide6.QtCore import Slot

@Slot()
def say_hello():
 print("Button clicked, Hello!")

# Create the Qt Application
app = QApplication(sys.argv)
# Create a button, connect it and show it
button = QPushButton("Click me")
button.clicked.connect(say_hello)
button.show()
# Run the main Qt loop
app.exec()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值