0

我是 PyQt 的新手,所以请多多包涵……

我使用 Qt Designer 创建了一个小部件,然后对其进行编译并将其保存为 .py。我编辑 .py 文件以添加一些附加功能。但是然后说我需要回到 Qt Designer 并更新 GUI 的布局。有没有办法编译它,然后用更改更新原始 .py 文件,而不必手动复制/粘贴我的自定义代码?

4

2 回答 2

1

如果您查看生成文件顶部的注释,您将看到这一行:

# WARNING! All changes made in this file will be lost!

这清楚地表明该文件不应该被编辑。但这不是问题,因为它只是一个普通的 python 模块,所以很容易将它导入到您的主应用程序中并从那里访问它。

您需要做的就是从 Qt Designer 创建一个顶级对象的子类(将是 a或) QMainWindow,然后使用生成的模块提供的方法将所有小部件添加到该子类的实例中。QDialogQWidgetsetupUi

因此,如果 Qt Designer 中的顶级对象被命名为“MainWindow”,pyuic 将创建一个相应的Ui_MainWindow类,该类可以导入到main.py脚本中并使用如下内容:

from PyQt4 import QtCore, QtGui
from myui import Ui_MainWindow

class Window(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.button.clicked.connect(self.handleButton)

    def handleButton(self):
        print('Hello World!')

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

有关更多详细信息,请参阅PyQt 文档中的使用 Qt 设计器。

于 2014-09-27T01:00:57.007 回答
0

我个人讨厌编译它。但就像 ekhumoro 说的,你可以导入这个类。不过我还是不喜欢这个。pyuic有时会进口讨厌的example_rc东西,这会再次降低生产力水平。如果您绝对必须转换.ui.py,请创建一个.bat文件来为您完成。代码:

@ECHO OFF
cd [directory of choice]
pyuic[4/5, depends on pyqt] -x example.ui -o example.py

或者你有你的操作系统的任何东西。我个人喜欢使用ui = uic.loadUi('example.ui')then ui.setupUi()。它可以让你变得更有效率!!

于 2014-10-01T10:55:19.813 回答