PyQt5 教程 - 基本窗口

Jinku Hu 2023年1月30日 2018年8月21日
  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 窗口大小

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn