python中qt有哪些控件_使用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

更多详情请浏览

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值