使用PyQt5调用Qt程序,基础PythonQt控件的使用方法

我们先看一段qt Python代码

from PyQt5.QtWidgets import QApplication, QLabel
app = QApplication([])
label = QLabel('Hello World!')
label.show()
app.exec_()

导入相关的QT相关的库。

接着是通过创建了一个QApplication:

app = QApplication([])

这是必须要创建的一个对象。每个GUI程序都必须有且只有一个QApplication的实例。如果没有这个实例的话,我们写的QT是没法执行的,所以我们写QT代码的时候一定不要忘了创建这个对象。 创建这个对象时需要传递一个list参数,因为我们的GUI不需要什么参数,所以直接传递了一个[]。

在创建了app之后,我们又创建了一个Label(标签):

label = QLabel('Hello World!')

传递的参数就是标签显示的内容,然后通过调用show()方法让它在屏幕上显示。

最后的一行代码是告诉qt一直运行下去,直到有人关闭它。

完成上述工作之后,执行代码,我们的一个小小窗口就会显示在屏幕上:

QVBoxLayout example Widgets 我们在Qt程序中看到的每个东西都可以称之为一个widget:按钮,标签,窗口,对话框,程序的进度条等等。与HTML元素类似,widget一般也都是嵌入式的。举个例子,一个窗口包含了一个按钮,同时也可能包含了一个标签。

下面的截图展示了QT中常用的widget。

Screenshot of common Qt widgets using the Fusion style 从上到下,从左到右,这些widget依次是:

QLabel
QComboBox
QCheckBox
QRadioButton
QPushButton
QTableWidget
QLineEdit
QSlider
QProgressBar
Layouts

正如上面的截图所示,我们的GUI中可能包含了多个widgets。在这种情况下,我们需要告诉QT如何安放这些widgets。例如。我们可以使用QVBoxLayout垂直堆放widget:

QVBoxLayout example 这个截图的代码如下:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
layout.addWidget(QPushButton('Top'))
layout.addWidget(QPushButton('Bottom'))
window.setLayout(layout)
window.show()
app.exec_()

一如既往,我们还是先创建了一个QApplication。接着我们创建了一个window。我们使用的是最基本的QWdiget,因为它只是一个容器,用来放置widget,我们并不需要它有什么特殊的功能。然后,我们就创建了一个layout,还创建了两个QPushButton放在里面。最后,我们告诉了window,我们需要使用这个layout。然后就跟我们的第一个GUI一样,调用show()和exec_()。

当然还有很多其他的layout,例如QHBoxLayOut等等。更多的风格,可以在qt的网站上查阅

自定义风格 QT一个比较强大的地方就是它支持自定义的用户风格。

风格设置 比较直接的设置方式就是在我们的程序中直接指定全局的风格。我们再看看之前的截图:

Screenshot of common Qt widgets using the Fusion style 上面的这个窗口风格称之为Flusion,我们也可以把他替换成Windows风格:

Screenshot of common Qt widgets using the Windows style 通过qpp.setStyle(...)方法,我们就可以设置自己的风格了。

from PyQt5.QtWidgets import *
app = QApplication([])
app.setStyle('Fusion')
...

具体支持什么样的风格依赖于我们使用的操作系统,但是一般都支持以下的风格:'Fusion', 'Windows', 'WindowsVista'(仅Windows支持) and 'Macintosh' (仅Mac支持)

自定义颜色 如果我们喜欢一种风格,但是我们想改变一些颜色。那么我们就可以使用QPalette来实现我们的功能。例如:

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette
from PyQt5.QtWidgets import QApplication, QPushButton

app = QApplication([])
app.setStyle('Fusion')
palette = QPalette()
palette.setColor(QPalette.ButtonText, Qt.red)
app.setPalette(palette)
button = QPushButton('Hello World')
button.show()
app.exec_()

除了上述的功能之外,我们还可以通过面板风格来改变我们程序的外观。这就是QT类似于CSS的特性。我们可以通过以下的方法我们的面板添加一些空间:

from PyQt5.QtWidgets import QApplication, QPushButton
app = QApplication([])
app.setStyleSheet("QPushButton { margin: 10ex; }")
button = QPushButton('Hello World')
button.show()
app.exec_()
Qt window with a button surrounded by extra space

更多关于面板风格的信息,可以查看qt官网。

Signals / slots QT 通过Signals(信号)机制来让我们对一些事件做响应,例如我们点击了一个按钮。下面的这个例子就是当我们点击按钮时,会弹出对话框。

from PyQt5.QtWidgets import *
app = QApplication([])
button = QPushButton('Click')
def on_button_clicked():
    alert = QMessageBox()
    alert.setText('You clicked the button!')
    alert.exec_()

button.clicked.connect(on_button_clicked)
button.show()
app.exec_()
PyQt QMessageBox saying that a button was clicked

button.clicked这就是个signal(信号),.connect(...)就是我们指定的与这个signal关联的slot(槽)。上面这是一个简单的响应函数,当我们点击这个按钮的时候,这个动作(函数)就会触发。

Signals在QT中是无处不在的,用户也可以定义自己的signal。

编译属于自己的APP

Qt商用模板项目

支持C++/Python语言,支持Windows\Linux\MacOS系统,支持X86\ARM\MIPS架构

img02

Qt Stock Exchange Sys

View more

Qt股票交易系统

Qt Stock Exchange System

img02

Qt Robot

View more

QtRobot 视频高清机器人控制系统

Qt Robot System

img02

Qt LED Editor

View more

Qt LED 灯效编辑器

Qt LED Editor

img02

Qt IOT Bike

View more

Qt IOT 物联网自行车

Qt IOT Bike

img02

Qt ECG Monitor

View more

Qt嵌入式床旁心电监护仪

Qt ECG Monitor

img02

Qt AutoDashboard

View more

Qt汽车仪表盘系统

Qt Auto Dashboard

img02

Qt DataMonitor

View more

Qt数据监控系统

Qt Data Monitor

img02

Qt Conference

View more

Qt会议终端系统

Qt Conference System

img02

Qt Video Player

View more

Qt视频播放器

Qt Video Player

img02

Qt NetDisk

View more

Qt网盘系统

Qt SkyDrive

img02

Qt IM

View more

Qt即时通讯系统

Qt IM

img02

Qt Cashier

View more

Qt便利店收银系统

Qt CashierSystem

产品文档

0基础赋能高级Qt界面开发

author

Qt控件库 API

author

使用视频教程

author

New Qt Designer使用文档

author

模板项目文档



武汉维仕杰科技有限公司 ( Wuhan VisualGear Co.,ltd )
Copyright © 2018-2024 www.qt-ui.com
鄂ICP备20004169号