项目新建.ui文件
保存覆盖项目中原ui文件
ui转换为.py文件
新建自定义类继承UI界面
# -*- codeing = utf-8 -*-
# @Time : 2025/5/28 10:00
# @Author : geXX
# @File : main.py
# @Software : PyCharm
# -*- coding: utf-8 -*-
import sys # 导入系统模块,用于处理程序退出等操作
from PySide6.QtWidgets import QApplication, QWidget, QMessageBox # 导入Qt组件
from PySide6.QtCore import Qt # 导入Qt核心功能
from myUi import Ui_Form # 导入自动生成的UI类
class MainWindow(QWidget, Ui_Form):
"""
主窗口类,继承自QWidget和Ui_Form
无论UI文件如何修改,都能自动适应变化
QWidget 是Qt提供的基础窗口
Ui_Form 是Qt Designer自动生成的界面布局
"""
def __init__(self, parent=None):
# 初始化父类
super().__init__(parent) # 调用父类的初始化方法
# 设置UI界面(自动加载Qt Designer设计的界面)
self.setupUi(self)
# 自定义初始化
self.init_ui()
# 连接信号槽
self.connect_signals()
def init_ui(self):
"""初始化界面元素"""
self.setWindowTitle("文本编辑器") # 设置窗口标题
self.pushButton.setText("清空文本") # 修改按钮文字
self.textEdit.setPlaceholderText("请输入文本...") # 设置文本框提示
def connect_signals(self):
"""连接信号与槽
"""
pass
def closeEvent(self, event):
"""重写关闭事件
点击窗口关闭时弹出对话框,防止误操作
"""
reply = QMessageBox.question(
self, '确认退出',
'确定要退出程序吗?',
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No,
QMessageBox.StandardButton.No # 默认选中否
)
if reply == QMessageBox.StandardButton.Yes:
event.accept() # 接收关闭事件,程序退出
else:
event.ignore() # 忽略,程序继续运行
if __name__ == '__main__': # 主程序入口,直接运行该程序时执行
# 启用高DPI缩放,不同分辨率屏幕上正常显示
QApplication.setHighDpiScaleFactorRoundingPolicy(
Qt.HighDpiScaleFactorRoundingPolicy.PassThrough
)
# 创建应用实例,Qt程序必备
app = QApplication(sys.argv)
# 创建主窗口
window = MainWindow()
window.resize(400, 300) # 可选的窗口大小设置
# 显示窗口
window.show()
# 执行应用
sys.exit(app.exec())
原ui文件用PySide6_Designer修改,
设计师改界面,程序员写逻辑,互不干扰
改完Designer只需重新生成myui.py
,不用改main.py
试着运行这个main.py
,然后:
-
用Qt Designer修改
myui.ui
(比如移动按钮位置) -
重新生成
myui.py
-
再次运行
main.py
→ 你会发现界面变了,但按钮点击功能依然有效!