PyQt5 教程 - 基本窗口

Jinku Hu 2024年2月15日
  1. PyQt5 基本窗口
  2. PyQt5 更改窗口大小
  3. PyQt5 添加窗口图标
PyQt5 教程 - 基本窗口

PyQt5 基本窗口

我们将在 PyQt5 中创建一个基本窗口。

import sys
from PyQt5 import QtWidgets


def basicWindow():
    app = QtWidgets.QApplication(sys.argv)
    windowExample = QtWidgets.QWidget()
    windowExample.setWindowTitle("Basic Window Example")
    windowExample.show()
    sys.exit(app.exec_())


basicWindow()
from PyQt5 import QtWidgets

它导入了 QtWidgets 模块,以便我们可以使用图形用户界面。

app = QtWidgets.QApplication(sys.argv)

这创建一个可以来用事件循环的应用程序对象。

windowExample = QtWidgets.QWidget()

然后我们需要创建一个 QtWidget,因为我们将使用它作为我们的顶级窗口,它已经有了所需要的一切元素。

windowExample.setWindowTitle("Basic Window Example")

setWindowTitle 将为窗口设置标题,我们可以在需要时调用它。

windowExample.show()

这语句需要用来显示窗口。

sys.exit(app.exec_())

我们需要使用 app.exec _() 函数启动该事件循环。

如果我们不这样做,程序将直接运行,因为它不会继续自行运行下去。这里的事件循环正在等待我们在那里运行的事件。

basicWindow()

现在我们将把所有这些放在一个可以被调用来启动窗口运行的函数中。

PyQt5 基本窗口

PyQt5 更改窗口大小

如果我们想改变窗口的大小,我们可以使用窗口控件的 setGeometry() 方法。

import sys
from PyQt5 import QtWidgets


def basicWindow():
    app = QtWidgets.QApplication(sys.argv)
    windowExample = QtWidgets.QWidget()
    windowExample.setGeometry(0, 0, 400, 400)
    windowExample.setWindowTitle("Basic Window Example")
    windowExample.show()
    sys.exit(app.exec_())


basicWindow()
windowExample.setGeometry(0, 0, 400, 400)

setGeometry() 方法将 4 个整数作为输入参数

  • X 坐标
  • Y 坐标
  • 框架的宽度
  • 框架的高度

因此,示例窗口大小为 400 x 400 像素。

PyQt5 窗口大小

PyQt5 添加窗口图标

import sys
from PyQt5 import QtWidgets, QtGui


def basicWindow():
    app = QtWidgets.QApplication(sys.argv)
    windowExample = QtWidgets.QWidget()
    windowExample.setWindowTitle("Basic Window Example")
    windowExample.setWindowIcon(QtGui.QIcon("python.jpg"))
    windowExample.show()
    sys.exit(app.exec_())


basicWindow()
windowExample.setWindowIcon(QtGui.QIcon("python.jpg"))

它将窗口图标设置为 python.jpgsetWindowIcon 方法的参数是来自 QtGui 模块的 QIcon 对象。

PyQt5 窗口大小

作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook