How to reconstruct a .ui file from pyuic .py file

2020-02-11 09:07发布

问题:

A while back I made a project using PyQt. I created some .ui files and generated the corresponding .py files using pyuic4. I want to start work on it again, but I have lost the .ui files (I formatted my PC and took a backup, but the .ui files were residing in the Qt designer folder and got lost).

Is there any way I can restore those .ui files from the .py files generated?

回答1:

It is possible to do this using QFormBuilder:

from PyQt4 import QtCore, QtGui, QtDesigner
from myui import Ui_Dialog

def dump_ui(widget, path):
    builder = QtDesigner.QFormBuilder()
    stream = QtCore.QFile(path)
    stream.open(QtCore.QIODevice.WriteOnly)
    builder.save(stream, widget)
    stream.close()

app = QtGui.QApplication([''])

dialog = QtGui.QDialog()
Ui_Dialog().setupUi(dialog)

dialog.show()

dump_ui(dialog, 'myui.ui')

(NB: showing the window seems to be quite important in order to get the best results).

Don't expect to get a perfect reconstruction of your original ui file, though. You will almost certainly need to do quite a lot of tidying up to get something acceptable - but if your ui is quite complex, it should still be worth it.