首页 > 后端开发 > Python教程 > 重新设计 Qt Designer UI 时如何防止丢失自定义代码?

重新设计 Qt Designer UI 时如何防止丢失自定义代码?

Patricia Arquette
发布: 2024-12-18 03:19:10
原创
798 人浏览过

How Can I Prevent Losing Custom Code When Redesigning Qt Designer UIs?

解决 Qt Designer UI 重新设计中丢失的修改

使用 Qt Designer 为 Python 设计图形用户界面 (GUI) 时,可能会遇到一个令人沮丧的问题:修改当重新设计 UI 时,对生成的 Python 代码所做的修改将会丢失。这可能会带来很大的不便,尤其是当您投入大量精力来定制特定功能的代码时。

设计和逻辑的分离

解决这个问题的关键在于将UI 设计来自处理 UI 功能的代码。不要直接修改生成的 Python 代码,而是创建一个使用设计但单独处理逻辑的新类。

示例实现

请考虑使用 Qt 中的 MainWindow 模板的以下示例设计师:

Ui_MainWindow.py

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        [...]

    def retranslateUi(self, MainWindow):
        [...]
登录后复制

logic.py

from Ui_MainWindow import Ui_MainWindow

class Logic(QMainWindow, Ui_MainWindow):
    def __init__(self, *args, **kwargs):
        QMainWindow.__init__(self, *args, **kwargs)
        self.setupUi(self)
登录后复制

通过采用这种方法,您可以在 Qt Designer 中更改设计而不影响其中的代码logic.py.

设计类选择

PyQtClass的选择取决于所选的设计模板:

Template PyQtClass
Main Window QMainWindow
Widget QWidget
Dialog with Buttons Bottom QDialog
Dialog with Buttons Right QDialog
Dialog with Without Buttons QDialog

附加功能

此实现允许在逻辑类中实现高级逻辑,例如处理窗口关闭事件。这是一个示例:

class Logic(QMainWindow, Ui_MainWindow):
    def __init__(self, *args, **kwargs):
        QMainWindow.__init__(self, *args, **kwargs)
        self.setupUi(self)
    def closeEvent(self, event):
        answer = QtWidgets.QMessageBox.question(
            self,
            'Are you sure you want to quit ?',
            'Task is in progress !',
            QtWidgets.QMessageBox.Yes,
            QtWidgets.QMessageBox.No)
        if answer == QtWidgets.QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
登录后复制

以上是重新设计 Qt Designer UI 时如何防止丢失自定义代码?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板