qt界面开发的几种方式 QT教程4基本窗口实现

一、PyQt5 简单案例

这是一个显示小窗口的简单示例。然而,我们可以用这个窗口做很多事情。我们可以调整它的大小、最大化或最小化它。这需要大量的编码。有人已经编写了这个功能。因为它在大多数应用程序中都是重复的,所以不需要重新编码。 PyQt5 是一个高级工具包。如果我们在较低级别的工具包中编码,下面的代码示例很容易有数百行。

simple.py

#!/usr/bin/python """ ZetCode PyQt5 tutorial In this example, we create a simple window in PyQt5. Author: Jan Bodnar Website: zetcode.com """ import sys from PyQt5.QtWidgets import QApplication, QWidget def main(): app = QApplication(sys.argv) w = QWidget() w.resize(250, 150) w.move(300, 300) w.setWindowTitle('Simple') w.show() sys.exit(app.exec_()) if __name__ == '__main__': main()

上面的代码示例在屏幕上显示了一个小窗口。

【更多音视频 QT学习资料,点击下方链接免费领取↓↓,先码住不迷路~】

点击→Qt开发进阶技术栈学习路线和资料

import sys

from PyQt5.QtWidgets import QApplication, QWidget

在这里,我们提供必要的导入。基本小部件位于 in PyQt5.QtWidgets 模块内

app = QApplication(sys.argv)

每个 PyQt5 应用程序都必须创建一个应用程序对象。 sys.argv 参数是来自命令行的参数列表。 Python 脚本可以从 shell 运行。这是我们控制脚本启动的一种方式。

w = QWidget()

QWidget 小部件是 PyQt5 中所有用户界面对象的基类。我们为 QWidget 提供默认构造函数。默认构造函数没有父级。没有父级的小部件称为窗口。

w.resize(250, 150)

resize 方法调整小部件的大小。它宽 250 像素,高 150 像素。

w.move(300, 300)

move 方法将小部件移动到屏幕上 x=300, y=300 坐标处的位置。

w.setWindowTitle('Simple')

我们使用 setWindowTitle 设置窗口的标题。标题显示在标题栏中。

w.show()

show 方法在屏幕上显示小部件。小部件首先在内存中创建,然后显示在屏幕上。

sys.exit(app.exec_())

最后,我们进入应用程序的主循环。事件处理从这一点开始。主循环从窗口系统接收事件并将它们分派给应用程序小部件。如果我们调用 exit 方法或主小部件被销毁,则主循环结束。 sys.exit 方法确保干净的退出。环境将被告知应用程序是如何结束的。

exec_ 方法有一个下划线。这是因为 exec 是 Python 关键字。因此,使用了 exec_。

qt界面开发的几种方式 QT教程4基本窗口实现(1)

二、为应用加图标

应用程序图标是一个小图像,通常显示在标题栏的左上角。在下面的示例中,我们将展示如何在 PyQt5 中执行此操作。我们还将介绍一些新方法。

某些环境不会在标题栏中显示图标。我们需要启用它们。如果您没有看到任何图标,请参阅我在 Stackoverflow 上的答案以获取解决方案。

icon.py

#!/usr/bin/python """ ZetCode PyQt5 tutorial This example shows an icon in the titlebar of the window. Author: Jan Bodnar Website: zetcode.com """ import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QIcon class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 300, 220) self.setWindowTitle('Icon') self.setWindowIcon(QIcon('web.png')) self.show() def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) if __name__ == '__main__': main()

前面的示例以程序样式进行编码。 Python 编程语言支持过程和面向对象的编程风格。在 PyQt5 中编程意味着在 OOP 中编程。

class Example(QWidget): def __init__(self): super().__init__() ...

面向对象编程中的三件事是类、数据和方法。在这里,我们创建了一个名为“示例”的新类。 Example 类继承自 QWidget 类。这意味着我们调用了两个构造函数:第一个用于示例类,第二个用于继承类。 super 方法返回 Example 类的父对象,我们调用它的构造函数。 __init__ 方法是 Python 语言中的构造方法。

self.initUI()

GUI 的创建委托给 initUI 方法。

self.setGeometry(300, 300, 300, 220) self.setWindowTitle('Icon') self.setWindowIcon(QIcon('web.png'))

这三个方法都继承自 QWidget 类。 setGeometry 做了两件事:它在屏幕上定位窗口并设置它的大小。前两个参数是窗口的 x 和 y 位置。第三个是宽度,第四个是窗口的高度。事实上,它将调整大小和移动方法结合在一种方法中。最后一个方法设置应用程序图标。为此,我们创建了一个 QIcon 对象。 QIcon 接收到要显示的图标的路径。

def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())

创建应用程序和示例对象。主循环开始。

qt界面开发的几种方式 QT教程4基本窗口实现(2)

三、在 PyQt5 中显示工具提示

我们可以为我们的任何小部件提供气球帮助。

tooltip.py

#!/usr/bin/python """ ZetCode PyQt5 tutorial This example shows a tooltip on a window and a button. Author: Jan Bodnar Website: zetcode.com """ import sys from PyQt5.QtWidgets import (QWidget, QToolTip, QPushButton, QApplication) from PyQt5.QtGui import QFont class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): QToolTip.setFont(QFont('SansSerif', 10)) self.setToolTip('This is a <b>QWidget</b> widget') btn = QPushButton('Button', self) btn.setToolTip('This is a <b>QPushButton</b> widget') btn.resize(btn.sizeHint()) btn.move(50, 50) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Tooltips') self.show() def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) if __name__ == '__main__': main()

在这个例子中,我们展示了两个 PyQt5 小部件的工具提示。

QToolTip.setFont(QFont('SansSerif', 10))

此静态方法设置用于呈现工具提示的字体。我们使用 10pt SansSerif 字体。

self.setToolTip('This is a <b>QWidget</b> widget')

要创建工具提示,我们调用 setTooltip 方法。我们可以使用富文本格式。

btn = QPushButton('Button', self)

btn.setToolTip('This is a <b>QPushButton</b> widget')

我们创建一个按钮小部件并为其设置工具提示。

【更多音视频 QT学习资料,点击下方链接免费领取↓↓,先码住不迷路~】

点击→Qt开发进阶技术栈学习路线和资料

btn.resize(btn.sizeHint())

btn.move(50, 50)

按钮正在调整大小并在窗口上移动。 sizeHint 方法为按钮提供了推荐的大小。

qt界面开发的几种方式 QT教程4基本窗口实现(3)

四、关闭窗口

关闭窗口的明显方法是单击标题栏上的 x 标记。在下一个示例中,我们将展示如何以编程方式关闭窗口。我们将简要介绍信号和插槽。 以下是我们在示例中使用的 QPushButton 小部件的构造函数。

QPushButton(string text, QWidget parent = None)

文本参数是将显示在按钮上的文本。父级是我们放置按钮的小部件。在我们的例子中,它将是一个 QWidget。应用程序的小部件形成层次结构。在这个层次结构中,大多数小部件都有它们的父级。没有父级的小部件是顶级窗口。

quit_button.py

#!/usr/bin/python """ ZetCode PyQt5 tutorial This program creates a quit button. When we press the button, the application terminates. Author: Jan Bodnar Website: zetcode.com """ import sys from PyQt5.QtWidgets import QWidget, QPushButton, QApplication class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): qbtn = QPushButton('Quit', self) qbtn.clicked.connect(QApplication.instance().quit) qbtn.resize(qbtn.sizeHint()) qbtn.move(50, 50) self.setGeometry(300, 300, 350, 250) self.setWindowTitle('Quit button') self.show() def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) if __name__ == '__main__': main()

在本例中,我们创建了一个退出按钮。单击按钮后,应用程序终止。

qbtn = QPushButton('Quit', self)

我们创建一个按钮。该按钮是 QPushButton 类的一个实例。构造函数的第一个参数是按钮的标签。第二个参数是父部件。父小部件是示例小部件,它是继承的 QWidget。

qbtn.clicked.connect(QApplication.instance().quit)

PyQt5 中的事件处理系统是使用信号槽机制构建的。如果我们点击按钮,就会发出点击的信号。插槽可以是 Qt 插槽或任何 Python 可调用的。

使用 QApplication.instance 检索的 QCoreApplication,内包含主事件循环——它处理和调度所有事件。 clicked 信号连接到终止应用程序的退出方法。通信是在两个对象之间完成的:发送者和接收者。发送者是按钮,接收者是应用对象。

qt界面开发的几种方式 QT教程4基本窗口实现(4)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页