PyQt5 – 使用Qt Designer

  • Post category:Python

PyQt5 是使用不同软件工具、Python 封装等开源方式,对Qt编程框架移植并利用 Python 语言进行扩展的一套工具集合。其中,QtDesigner 是基于 Qt 语言开发的可视化窗体设计器,可以帮助开发者设计 GUI 界面。

在本文中,我们将详细讲解如何使用 PyQt5 和 QtDesigner 设计 Python GUI 界面。过程中将包含以下步骤:

  1. 安装 PyQt5 和 QtDesigner
  2. 创建 Python 项目
  3. 生成可视化设计界面(.ui文件)
  4. 将 UI 文件转换为 Python 代码
  5. 程序代码中引用 QtDesigner 设计界面

下面将逐步介绍这些步骤。

安装 PyQt5 和 QtDesigner

使用以下命令安装 PyQt5:

pip install PyQt5

使用以下命令安装 QtDesigner(在一些发行版中,这个工具的名字可能叫做”qttools”或”qtcreator”):

sudo apt-get install qttools5-dev-tools

创建 Python 项目

首先,我们需要创建一个 Python 项目,可以使用任何你熟悉的 IDE(如PyCharm等)。

生成可视化设计界面(.ui文件)

接下来,我们需要使用 QtDesigner 工具来设计我们的界面。在命令行中输入以下命令:

designer

这将打开一个可视化界面设计器。

在设计器中,我们可以添加不同的控件、布局、样式等,创建我们所需的界面。例如,我们可以添加一个“Label”控件,用于显示文本信息;添加一个“PushButton”按钮,用于触发某个函数等。此处不再详细介绍每个控件的使用方法,读者可以参考 QtDesigner 的相关文档。

完成界面设计后,我们需要将 UI 文件保存,以便后续处理。在菜单栏中选择“File” -> “Save As”,将文件保存为 .ui 文件。

将 UI 文件转换为 Python 代码

生成 UI 文件后,我们需要使用 PyUIC 工具将其转换为 Python 代码。在命令行中输入以下命令:

pyuic5 input.ui -o output.py

其中,input.ui 是刚才保存的 UI 文件名,output.py 是要输出的 Python 代码文件名。

此外,我们还需要添加一段代码,以使生成的代码文件可以被我们的主程序所引用。这段代码通常是类似于以下这样的:

from PyQt5 import QtWidgets, QtCore, QtGui
import output # 生成的 Python 代码文件名

class MyWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.ui = output.Ui_MainWindow() # 将生成的窗口界面类作为子类进行初始化
        self.ui.setupUi(self) # 将窗口界面类中的属性和方法创建到QWidget上

这段代码会将生成的 Python 代码文件作为子类导入主程序,并将界面初始化为 QWidget 窗口。

程序代码中引用 QtDesigner 设计界面

最后,我们在程序代码中使用上一步中的 MyWindow 类,并将其实例化。在实例化过程中,MyWindow 类将自动初始化 QtDesigner 设计好的界面,将其显示在窗口中。此处给出一个简单的例子。

from PyQt5 import QtWidgets
import sys
from ui import output # 生成的 Python 代码文件名

class MyWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.ui = output.Ui_MainWindow() # 将生成的窗口界面类作为子类进行初始化
        self.ui.setupUi(self) # 将窗口界面类中的属性和方法创建到QWidget上

app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())

以上代码中,从 ui 包中导入了生成的 Python 代码文件,并在 MyWindow 构造函数中以 QWidget 窗口的方式将其初始化并显示。

此外,如果我们需要在窗口界面上的控件上添加一些逻辑,请在创建 MyWindow 类时添加对应的信号和槽函数。

例如,以下代码将在“Button”按钮上添加一个单击事件,单击后打印一些信息。

from PyQt5 import QtCore, QtWidgets
import sys
from ui import output # 生成的 Python 代码文件名

class MyWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.ui = output.Ui_MainWindow() # 将生成的窗口界面类作为子类进行初始化
        self.ui.setupUi(self) # 将窗口界面类中的属性和方法创建到QWidget上
        self.ui.Button.clicked.connect(self.buttonClick)

    def buttonClick(self):
        print('Button clicked!')

app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())

以上就是使用 PyQT5 和 QtDesigner 进行 Python GUI 界面设计的完整攻略,其中还包含了两个示例说明。希望对初学者有所帮助。