qt界面开发的几种方式 QT教程4基本窗口实现
这是一个显示小窗口的简单示例。然而,我们可以用这个窗口做很多事情。我们可以调整它的大小、最大化或最小化它。这需要大量的编码。有人已经编写了这个功能。因为它在大多数应用程序中都是重复的,所以不需要重新编码。 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_。
二、为应用加图标
应用程序图标是一个小图像,通常显示在标题栏的左上角。在下面的示例中,我们将展示如何在 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_())
创建应用程序和示例对象。主循环开始。
三、在 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 方法为按钮提供了推荐的大小。
四、关闭窗口
关闭窗口的明显方法是单击标题栏上的 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 信号连接到终止应用程序的退出方法。通信是在两个对象之间完成的:发送者和接收者。发送者是按钮,接收者是应用对象。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com