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

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

Patricia Arquette
Patricia Arquette原创
2024-12-18 03:19:10794浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn