【桌面应用开发】Qt Designer UI文件转Python文件与主程序关联实战示例
我将通过一个简单的示例,详细说明如何将 Qt Designer 设计的 .ui 文件转换成 .py 文件,并最终与 Python 主程序 关联,实现界面与逻辑的交互。
1. 示例目标
.ui 文件转换为 .py 文件(ui_mainwindow.py)。main.py,关联界面和逻辑(点击按钮时在文本框显示 “Hello, PyQt5!”)。2. 步骤详解
(1) 使用 Qt Designer 设计界面
- 打开 Qt Designer(安装 PyQt5 后自带):
designer - 选择 “Main Window”,然后添加:
- 一个
QPushButton(按钮) - 一个
QTextEdit(文本框) - 保存为
mainwindow.ui(UI 文件)。
(2) 将 .ui 文件转换为 .py 文件
使用 pyuic5 工具(PyQt5 自带)转换:
pyuic5 -x mainwindow.ui -o ui_mainwindow.py
-x:生成可单独运行的代码(可选)。-o:指定输出文件名。生成的 ui_mainwindow.py 包含界面代码,但不要直接修改它(后续重新生成会覆盖)。
(3) 编写主程序 main.py 关联逻辑
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from ui_mainwindow import Ui_MainWindow # 导入生成的UI类
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 初始化UI(来自ui_mainwindow.py)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# 关联按钮点击事件
self.ui.pushButton.clicked.connect(self.on_button_click)
def on_button_click(self):
"""按钮点击时在文本框显示文字"""
self.ui.textEdit.setText("Hello, PyQt5!")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
(4) 代码解析
-
Ui_MainWindow - 由
ui_mainwindow.py提供,负责界面布局。 - 通过
self.ui.setupUi(self)加载界面。 -
信号与槽(Signal & Slot)
self.ui.pushButton.clicked.connect(self.on_button_click)
表示按钮点击时调用on_button_click方法。-
主程序入口
QApplication管理应用,QMainWindow是主窗口。app.exec_()启动事件循环。
3. 运行效果
- 执行主程序:
python main.py - 点击按钮后,文本框显示: Hello, PyQt5!
4. 关键点总结
| 步骤 | 说明 |
|---|---|
| Qt Designer | 拖拽设计界面,保存为 .ui 文件。 |
| pyuic5 | 将 .ui 转换为 .py(ui_mainwindow.py)。 |
| 主程序 | 继承 QMainWindow,关联 Ui_MainWindow 并添加逻辑。 |
| 信号与槽 | 用 .connect() 绑定事件(如按钮点击)。 |
5. 扩展建议
.ui 文件(无需转换):
from PyQt5.uic import loadUi
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
loadUi("mainwindow.ui", self) # 直接加载UI文件
.ui 文件,分别关联不同逻辑类。如果有疑问,欢迎继续交流! 😊

作者:Botiway